首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

构造函数中调用函数有关问题

2013-01-28 
构造函数中调用函数问题子类与父类中 构造函数可以调用哪些类型的函数,这些函数是执行子类中的还是父类中

构造函数中调用函数问题
子类与父类中 构造函数可以调用哪些类型的函数,这些函数是执行子类中的还是父类中的;如果子类与父类构造函数都调用函数执行一段代码而实现的结果完全不同会怎么样?如果操作结果完全一样又会怎么样? C/C++ 构造函数 继承
[解决办法]
"这些函数是执行子类中的还是父类中的"

这个你可以显式指定呀,
class A
{
}
class B : public A
{
}
在B()中可以
A::Fun()这样显式指定调用 A中的Fun()


"如果子类与父类构造函数都调用函数执行一段代码而实现的结果完全不同会怎么样?如果操作结果完全一样又会怎么样? "

完全一样和完全不一样都可能。
比如A中Fun()就输出Hello MoreWindows,那么A和B执行Fun()都会输出相同的Hello MoreWindows
如A中Fun()就输出*this指针的地址,那么A和B肯定输出结果不会一样。
[解决办法]

引用:
比如class A中 func() 作用是加载一个图片;在A构造函数中调用了
class B:public A中 func()作用是加载另一个图片;  在B构造函数中调用了

这样在生成B对象时 就会有两张图片被加载??

如果func是虚函数那 结果会怎么样

如果不是虚函数,派生类构造函数调用之前肯定是要先调用其基类的构造函数的,所以是两张图片。
但是虚函数的话就好像不符合语法了。构造函数中是不允许调用虚函数,因为在派生类的独有成分被构造之前他被编译器视为是基类而不是派生类。所以你在派生类执行基类构造函数的时候总是调用基类的虚函数了。
[解决办法]
除非有特别的理由,不要构造函数中不要调用该对象的属于本类继承体系的虚函数.

热点排行