在以下代码中:
class A
{
A() {}
friend class B;
};
class B
{
public:
void foo() {A* p=new A;};
};
int main()
{
B b;
b.foo();
A* p = new A;
return 0;
}
该函数foo()
通过编译,但该行A* p = new A;
没有。怎么会这样?new
是全局运算符,因此它不能调用私有构造函数,那么为什么编译器也不抱怨foo()
呢?