我有一个 Parent 类,它接受两个引用,这些引用可能实际上是对同一事物的引用,也可能不是。在这种情况下,当它们相同时,我会在 Child 类的初始化程序列表中收到序列点警告:
class A
{
public:
A(int) {}
private:
A() {}
};
class Parent
{
public:
Parent(A&, A&) {}
};
class Child : public Parent
{
public:
Child() :
Parent(
*(_A = new A(0)),
*(_A)) //Warning on this line
{
}
private:
A *_A;
};
int main(int argc, char** argv)
{
return 0;
}
我猜这是因为在分配内存后不能保证该行上的取消引用。无论如何,我的问题是,在不更改父级或 A 的情况下,是否存在这种情况?