读书人

继承从CButton 的自定义类,需要调用CB

发布时间: 2013-12-10 15:05:55 作者: rapoo

继承自CButton 的自定义类,需要调用CButton::CButton() 构造函数吗?
继承自CButton 的自定义类,需要调用CButton::CButton() 构造函数吗?

我使用VS2010 中自带的添加类功能,写了一个自定义的类,继承自CButton 类,VS自动帮我生成了头文件和实现文件,同时生成构造函数和析构函数。但有一点有点奇怪的是,在构造函数的实现中,并没有显示调用CButton 类的构造函数。

我想问,这个我需要不需要给添加上去。
VS的这个机制是不允许调用构造函数,还是没有必要调用它的构造函数。

请大神指教!!!!
[解决办法]
不调用可以初始化
CMyButton::CMyButton()
: a(1), b(1), c(1), d(1), e(1), f(1), g(1), h(1), i(0),
j(0), k(0), l(0), m(0)
{ ... }
[解决办法]
当子类被实例化之后,一定会自动调用父类的构造函数的。
[解决办法]

引用:
Quote: 引用:

如果不传递构造函数的参数就不需要


CButton 的构造函数是没有参数的呢!

引用:
不需要你手动调


另外,你们都说的是不需要手动调用。我还想清楚一点就是,VS的机制是否就是告诉我们最好别去调用CButton 的构造函数?
还有就是从C++的继承机制来说,子类都应该调用父类的构造函数才对的啊,否则一些数据就不能被初始化,而析构函数却会被调用。这似乎不合常理!!!


LZ你自己测试一下就明白了,创建父类A 子类B 孙类C,定义C c;并在其上设置断点,按F11,逐条执行,看看你各个构造函数是怎么被调用的
[解决办法]
所以:
VS的这个机制是不允许调用构造函数,还是没有必要调用它的构造函数。

的答案是:不用写出来,已经调用了

读书人网 >VC/MFC

热点推荐