E xem mấy video của A @ltd ko thấy mục này.
a có thể làm 1 video hướng dẫn học phần này được ko ạ?
e loay hoay cả ngày mà vẫn ko hiểu.
Con trỏ cấu trúc
Anh chưa làm phần này, em có thể coi phần class tạm tạm, cũng giống như struct thôi. Trong video về Class anh đã nói là trong C++ Class giống struct. Chỉ khác là class các member của nó mặc định là private
nhưng không có con trỏ tới class (cấu trúc) a ạ.
E cứ ngĩ, class
cũng chỉ là 1 kiểu dữ liệu (mà do người dùng định nghĩa. Các kiểu dữ liệu như int
thì do ngôn ngữ C/C++ nó định nghĩa). Nên cách dùng cũng gần giống mà e.
Có đoạn code về Pointer of Class. E thử đọc xem có hiểu thêm dc gì không
// pointer to classes example
#include <iostream>
using namespace std;
class Rectangle {
int width, height;
public:
Rectangle(int x, int y) : width(x), height(y) {}
int area(void) { return width * height; }
};
int main() {
Rectangle obj (3, 4);
Rectangle * foo, * bar, * baz;
foo = &obj;
bar = new Rectangle (5, 6);
baz = new Rectangle[2] { {2,5}, {3,6} };
cout << "obj's area: " << obj.area() << '\n';
cout << "*foo's area: " << foo->area() << '\n';
cout << "*bar's area: " << bar->area() << '\n';
cout << "baz[0]'s area:" << baz[0].area() << '\n';
cout << "baz[1]'s area:" << baz[1].area() << '\n';
delete bar;
delete[] baz;
return 0;
}
Link nè e : http://www.cplusplus.com/doc/tutorial/classes/
ý e là e ko thấy video ấy a ạ
e không hiểu lắm ạ.
cái này nhiều chỗ khó hiểu quá.
a giải thích cho e thêm về cái class này đc ko ạ.
Giải thích như thế nào dc nhỉ, chắc e fai nói a e chưa hiểu chỗ nào. Nếu e hiểu dc con trỏ kiểu int
thì e sẽ hiểu con trỏ kiểu ‘class’, vì chúng đều giữ địa chỉ ô nhớ. Có khác biệt nhất là class
có nhiều thành phần (thuộc tính, phương thức…), muốn truy xuất tới các thành phần đó thì ta dùng dấu ->
thay vì dấu .
như cách không dùng con trỏ.
e ko hiểu cách hoạt động của class này ạ.
chỗ này ạ.
Rectangle(int x, int y) : width(x), height(y) {}
Cái này không liên quan đến con trỏ, lần sau em nên tạo topic khác để hỏi.
đây là hàm dựng, gán width = x, height = y.
e thấy a ấy post code trong top này thì tiện e hỏi a ấy luôn ạ.
hàm dựng tức là mình viết {tên_biến}([giá_trị]) thì biến sẽ nhận giá trị là tham số mình truyền vào ạ?
có dùng trong main hay hàm khác đc ko a?
Hàm dựng khác hàm main và các hàm khác. Chỉ sử dụng trong Class và chỉ có hàm cùng tên với Class mới gọi là hàm dựng. Đây là một hàm đặc biệt.
Em xem các bài nói về hàm dựng ở đây.
vâng, cái hàm dựng thì e hiểu rồi.
e chỉ ko hiểu cách viết này ạ:
: width(x), height(y)
Đây là cách khởi tạo giá trị như anh đã nói. Tên tiếng anh của nó là “Initialization Lists”.
Rectangle(int x, int y) : width(x), height(y) {}
Tương đương
Rectangle(int x, int y){
width = x;
height = y;
}
Cái đặc biệt là việc khởi tạo như thế này giúp cho ta có thể gán giá trị cho biến const và biến reference. Hãy thử Bài tập: tạo ra biến const thuộc về Class và gán giá trị cho nó.
Và “Initialization Lists” là cách làm đúng khi sử dụng hàm dựng (constructor). Trong một trường hợp khởi tạo cho biến là Class mà dùng “Initialization Lists” thì ta sẽ làm cho việc khởi tạo nhanh hơn.
Lý do tại sao xem thêm ở đây