30/09/2018, 16:06

Con trỏ cấu trúc

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.

Nguyễn Minh Dũng viết 18:07 ngày 30/09/2018

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

Sáng Béo viết 18:14 ngày 30/09/2018

nhưng không có con trỏ tới class (cấu trúc) a ạ.

Phạm Hoàng Tuấn viết 18:11 ngày 30/09/2018

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/

Nguyễn Minh Dũng viết 18:15 ngày 30/09/2018

Vẫn có con trỏ tới class chứ @htwap. Đọc thêm bài của Tuấn

Sáng Béo viết 18:17 ngày 30/09/2018

ý e là e ko thấy video ấy a ạ

Sáng Béo viết 18:17 ngày 30/09/2018

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 ạ.

Phạm Hoàng Tuấn viết 18:08 ngày 30/09/2018

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ỏ.

Sáng Béo viết 18:21 ngày 30/09/2018

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) {}
Nguyễn Minh Dũng viết 18:20 ngày 30/09/2018

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.

Sáng Béo viết 18:10 ngày 30/09/2018

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?

Nguyễn Minh Dũng viết 18:08 ngày 30/09/2018

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.

Đăng ký khóa học C++ cơ bản 2016 ( NEW ) tại đây : Thông tin về khóa học xem tại đây : -Sự khác biệt giữa 2 khóa học cũ và mới : +Khóa học C++ cơ bản 2016 là khóa học mới, được đầu tư nhiều hơn từ nội dung, phương pháp học, cách học hiệu quả. +Trong khóa học còn có nhiều kiến thức mới như thực hành trên HackerRank, thực hành trên Codefights và Đạt nghĩ mọi người nên học khóa học mới, bởi vì đây là kiến thức mới, phù hợp với hiện tại..... Mặt khác âm thanh cũng tốt hơn nhiều so với khóa học …

Đăng ký khóa học C++ cơ bản 2016 ( NEW ) tại đây : Thông tin về khóa học xem tại đây : -Sự khác biệt giữa 2 khóa học cũ và mới : +Khóa học C++ cơ bản 2016 là khóa học mới, được đầu tư nhiều hơn từ nội dung, phương pháp học, cách học hiệu quả. +Trong khóa học còn có nhiều kiến thức mới như thực hành trên HackerRank, thực hành trên Codefights và Đạt nghĩ mọi người nên học khóa học mới, bởi vì đây là kiến thức mới, phù hợp với hiện tại..... Mặt khác âm thanh cũng tốt hơn nhiều so với khóa học …
Sáng Béo viết 18:11 ngày 30/09/2018

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)

Nguyễn Minh Dũng viết 18:09 ngày 30/09/2018

Đâ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”.

gán width = x, height = y.

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

stackoverflow.com
Ankur

Benefits of Initialization lists

c++, initialization-list
asked by Ankur on 06:00AM - 21 Oct 09

Bài liên quan
0