我知道我们不能定义以不完整类型作为参数的函数,因此预计以下代码无法编译并出现错误 C2027: use of undefined type 'Derived'
class Derived;
class Base{
public:
void test(Derived d){ cout<<"test"<<endl; }
};
class Derived : public Base{
int j;
};
按照同样的逻辑,我预计当 test() 采用 Base 的对象时编译会失败,该对象在此之前是不完整类型的。但是,它没有,下面的代码编译得很好
class Derived;
class Base{
public:
void test(Base b){ cout<<"test"<<endl; }
};
class Derived : public Base{
int j;
};
我们在定义类时拥有的不完整类类型与前向声明暴露的不完整类型之间有区别吗?