class CCQ { public: CCQ(int ival):iccq(ival) { printf("CCQ\n"); } virtual ~CCQ() { printf("~CCQ\n"); } virtual void TestBBQ() { printf("TestCCQ\n"); } public: int &iccq; }; class BBQ:public CCQ { public: BBQ() { ibbq = 2; printf("BBQ\n"); } virtual ~BBQ() { printf("~BBQ\n"); } virtual void TestBBQ() { printf("TestBBQ\n"); } public: int ibbq; }; int mian() { CCQ ccq(1); }
为什么提示:error C2512: “CCQ” : 没有合适的默认构造函数可用?
因为真的没有默认构造函数。你自己指定了构造函数时,就不为你提供默认构造函数了。而构造BBQ时又需要先构造父对象。
所以在CCQ里再加一个无参数的构造函数,
或者BBQ的构造函数写这样
BBQ():CCQ(1) { ibbq = 2; printf("BBQ\n"); }