【发布时间】:2014-03-15 20:50:07
【问题描述】:
假设我有以下情况:
class A; // forward declaration
class A {
public:
A(A* parent) : parent(parent) {}
A* parent;
virtual void foo() = 0;
};
class B : public A {
public:
B() : A(this) {}
void foo() {}
};
当实例化B 类的两个单独实例时,parent 指针在每个实例中都是相同的。知道为什么吗?
编辑:我相信上面的内容现在更接近于我的代码中的模型。
【问题讨论】:
-
this应该可以正常工作。你能发布实际的错误信息吗? -
this的值(对象的地址)在此时完全可以使用,无论对象的内容是否已初始化。 -
本身没有错误信息,只是该类的两个独立实例指向同一个内存位置。
-
这可能与在我的实际代码中等效于
A的类是纯虚拟的事实有关吗? -
你需要一个拷贝构造函数。两个指向两个相同的对象是缺少复制 ctor 的症状。
标签: c++ pointers initialization this forward-declaration