xem xét:C++: Có thể sao chép đa hình Constructors làm việc?
class A
{
public:
A(int val) : m_ValA(val) {}
A(const A& rhs) {}
int m_ValA;
};
class B : public A
{
public:
B(int val4A, int val4B) : A(val4A), m_ValB(val4B) {}
B(const B& rhs) : A(rhs), m_ValB(rhs.m_ValB) {}
int m_ValB;
};
int main()
{
A* b1 = new B(1, 2);
A* b2 = new A(*b1); // ERROR...but what if it could work?
return 0;
}
Would C++ bị phá vỡ nếu "mới A (b1)" đã có thể giải quyết để tạo ra một bản sao B mới và trở về A?
Điều này thậm chí có hữu ích không?
+1, nhưng tôi cũng sẽ thêm một destructor ảo đến lớp;) –
Quả thật là một thí nghiệm tưởng tượng. Và trong khi đây là cách tiêu chuẩn để thực hiện các nhà xây dựng bản sao ảo, tôi đã tò mò tại sao ngôn ngữ không cung cấp một cách chuẩn hóa để làm điều này. – 0xC0DEFACE
Trả về biến thể tốt hơn: B * B :: Clone() –