30/09/2018, 17:11
Dấu : ở public trong C++ Template có ý nghĩa gì
Cho mình hỏi đoạn code có dấu : ở public có ý nghĩa gì ?
template <class T, class V>
class myPair {
public :
myPair (T first, V second) :
first(first), second (second) {
// no to do something
}
private:
T first;
V second;
};
Bài liên quan
Chỉ là cú phafp thôi, để thông báo phần tiếp theo đây là public.
Nhân tiên cho em hỏi dấu “:” ở chỗ myPair ( T first, V second) và nó có giống với có một hàm class SinhVien, lúc t khai báo SinhVien::SV có ngĩa là gì ạ!
gọi constructor có tên myPair, khởi tạo kiểu implicit cho trường this->first với giá trị first, this->second là second.
các thuộc tính và phương thức: myPair, first, second có modifier là public
Cách khởi tạo như vậy gọi là Member Initializer List
Trong c++, để gán giá trị cho biến member có 2 cách:
Ví dụ class Foo:
Member Initialization:
Member Assignment:
Hai hàm khởi tạo về mặt ngữ nghĩa là tương đương với nhau, đều gán biến
bar = num
Điểm khác nhau là khi định nghĩa kiểu Member Initialization hàm khởi tạo sẽ chỉ được gọi một lần, việc khởi tạo, gán giá trị cho biến được thực hiện trong một thao tác (operation) duy nhất.
Khi định nghĩa theo kiểu Member Assignment thì đầu tiên sẽ gọi hàm khởi tạo mặc định của class, sau đó mới gán giá trị cho biến
bar
==> Sử dụng Member Initialization sẽ nhanh hơn
Cám ơn bác và mọi người, mình hiểu rồi
cái dấu “::” là để khai báo cái SV nằm trong SinhVien bạn ạ