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” : 没有合适的默认构造函数可用?
关于C++中的类的封装,如何进行封装?怎么样更好的封装?下面仅就构造函数的初始化问题进行细致分析:
类的构造函数及参数初始化列表_基本成员
类的构造函数及参数初始化列表_基本成员注意事项
类的构造函数及参数初始化列表_const成员
类的构造函数及参数初始化列表_引用成员
类的构造函数及参数初始化列表_指针成员
类的构造函数及参数......
答案就在这里:构造函数及其参数列表初始化问题
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?
因为真的没有默认构造函数。你自己指定了构造函数时,就不为你提供默认构造函数了。而构造BBQ时又需要先构造父对象。
所以在CCQ里再加一个无参数的构造函数,
或者BBQ的构造函数写这样
BBQ():CCQ(1)
{
ibbq = 2;
printf("BBQ\n");
}
顺便吐槽一下,你那个主函数的函数名是个什么鬼!
因为你BBQ的构造函数没有调用CCQ的对应参数构造函数,而它又没有默认构造函数,所以就报错了。
你要么再加一个缺省的构造函数给CCQ。
你确实没有默认的构造参数,在CCQ里再加一个无参数的构造函数。楼上回答的都正确的。