01/10/2018, 15:07

Toán tử : trong C++ khi khai báo method có ý nghĩa gì?

Tại sao trong CT này, khi khai báo các medthod lại có phần :A(10) hay :A(100) vậy các pro ?
và Ý nghĩ của việc cho virtual vào ngay sau dấu : kế thừa là sao ?
Các pro giải thích giúp mình với ạ, thanks!

rogp10 viết 17:10 ngày 01/10/2018

Tại sao trong CT này, khi khai báo các medthod lại có phần :A(10) hay :A(100) vậy các pro ?

Viết ngay chỗ constructor thì ý nghĩa như super() bên Java tức là gọi constructor lớp cha.

Nguyen Trong Dung viết 17:14 ngày 01/10/2018

^^ mình k rõ Java b à b nói rõ hơn được k ^^!, và nếu không viết cạnh constructor thì sao b ?

rogp10 viết 17:09 ngày 01/10/2018

Nếu bạn gọi constructor của lớp cha trong thân hàm thì nó có nghĩa là tạo đối tượng mới muốn dùng luôn constructor đó thì phải viết như trên.

Khi khởi tạo lớp con thì constructor không tham số lớp cha cũng được gọi, trừ trường hợp không tồn tại (error), hoặc đã chỉ ra như trên.

Nguyễn Phạm Anh Quân viết 17:20 ngày 01/10/2018

Trong C++, mọi member variables & methods đều có thể được thừa kế, nhưng riêng constructor thì không, nên phải gọi riêng như trên B() : A(10)

Nếu muốn định nghĩa keyword super như trong các ngôn ngữ Java/C# thì có thể đọc thêm ở đây! 1 số game engine/framework cũng rất hay dùng super: https://stackoverflow.com/questions/180601/using-super-in-c

HelloWorld viết 17:07 ngày 01/10/2018

: là danh sách khởi tạo, chỉ dùng cho hàm khởi tạo
Ví dụ

class B {
   private:
      int a;
   public: 
   B() : a(0) {}
  // tương đương
   B() {
       this->a = 0;
  }
};
Bài liên quan
0