#include<iostream> using namespace std; class B { public: B() { b=2; } int b; }; class A { public: A() {} int i; B a; }; int main() { const A aa; //using A::B; cout<<sizeof(A)<<endl; // B b; }
public: //A() //{} int i; B a;
public: A(); int i; B a;
把你所谓的不定义A()的代码贴一下, 恐怕你是声明了没实现吧.
在声明时就给它赋个值
#include<iostream> using namespace std; class B { public: B() { b=2; } int b; }; class A { public: A() {} int i; B a; }; int main() { const A aa; //using A::B; cout<<sizeof(A)<<endl; // B b; } 如果不定义A() 构造函数不行,这个不是编译器自动定义吗?
Quote: 引用 楼主 wanghb1989 的回复: #include<iostream> using namespace std; class B { public: B() { b=2; } int b; }; class A { public: A() {} int i; B a; }; int main() { const A aa; //using A::B; cout<<sizeof(A)<<endl; // B b; } 如果不定义A() 构造函数不行,这个不是编译器自动定义吗? 噢,看错了,你是说不定义A()的情况,确实不行,编译器不是一定自动合成缺省构造函数,是当有需要的时候才自动定义一个,这里需要这样定义const A aa(),要加个括号。不然编译器以为你不需要这个缺省的构造函数。
Quote: 引用 7 楼 jerry_dqh 的回复: Quote: 引用 楼主 wanghb1989 的回复: #include<iostream> using namespace std; class B { public: B() { b=2; } int b; }; class A { public: A() {} int i; B a; }; int main() { const A aa; //using A::B; cout<<sizeof(A)<<endl; // B b; } 如果不定义A() 构造函数不行,这个不是编译器自动定义吗? 噢,看错了,你是说不定义A()的情况,确实不行,编译器不是一定自动合成缺省构造函数,是当有需要的时候才自动定义一个,这里需要这样定义const A aa(),要加个括号。不然编译器以为你不需要这个缺省的构造函数。 const A aa();是定义一个函数了,你可以用cout<<aa.i<<endl;测试一下
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。
添加到收藏夹 *