Tôi muốn biết nếu chúng cơ bản là giống nhau.Chuyển các tham chiếu đến một hàm dựng C++ và lưu chúng vào các loại tham chiếu hoặc không tham chiếu
class ExampleClass {
public:
ExampleClass(Object& newObj) : obj(newObj) {}
private:
Object obj;
}
class ExampleClass2 {
public:
ExampleClass2(Object& newObj) : objReference(newObj) {}
private:
Object& objReference;
}
Vì vậy, điều này sẽ không hoạt động với một trong các lớp học?
ExampleClass* getExampleObject() {
Object obj;
return new ExampleClass(obj);
}
ExampleClass2* getExample2Object() {
Object obj;
return new ExampleClass2(obj);
}
void main() {
ExampleClass* ec = getExampleObject();
ExampleClass2* ec2 = getExample2Object();
//Do something involving the member objects of ec and ec2
}
Vì vậy, các đối tượng thành viên không hợp lệ sau cả hai phương thức getExampleObject? Không phải là constructor của ExampleClass lưu một bản sao của đối tượng được tham chiếu trong constructor của nó?
mã của bạn không biên dịch, vì bạn không thể gán con trỏ (như được trả về bởi getExampleObject và getExample2Object) thành biến không trỏ ec và ec2. – SirDarius
Vâng, tôi xin lỗi, tôi quên mất *. – user1468729