30/09/2018, 21:35
Khởi tạo Constructor với reference trong C++
// CalculatorController .h
class CalculatorController
{
private:
SimpleCalculator& fModel; // reference to model object
ICalculatorView& fView; // reference to view object
public:
CalculatorController( SimpleCalculator& aModel, ICalculatorView& aView );
}
//CalculatorController.cpp
#include "CalculatorController.h"
CalculatorController::CalculatorController( SimpleCalculator& aModel, ICalculatorView& aView ) : fModel(aModel), fView(aView) { }
Cho em hỏi là vì sao ở file .cpp khởi tạo constructor phải thêm vào : fModel(aModel), fView(aView) ạ?
Trong lecture nói như thế này
“Reference data members must be
initialized before the contructor
body is entered!”
Em vẫn chưa hiểu lắm phần này ạ, mọi người giải thích giúp em, em cảm ơn.
Bài liên quan
C++ reference phải luôn “gắn” tới hoặc đại diện cho 1 object nào đó, có thể tạm hiểu là con trỏ nhưng ko cho phép mang giá trị null.
khi bước vào phần thân của phương thức khởi tạo (sau dấu
{
) thì tất cả các thuộc tính của class đã được khởi tạo rồi. Nghĩa làfRef
được khởi tạo trước{
. Nếu ko cung cấp object nào chofRef
đại diện thì sẽ gây lỗi. Dấu:
sau khi khai báo phương thức khởi tạo cho phép khởi tạo các thuộc tính trong class trước{
.ví dụ
với C++ reference thì chỉ gán được 1 lần, và phải có gán cho 1 object nào đó
ví dụ
khi xài reference trong class