构造函数为何不能为虚函数?
构造函数为何不能为虚函数?
[解决办法]
构造函数是用来构造这个类的实例化对象的
如果是虚函数涉及子类继承之后重写构造函数的问题
举一个反例来说:
父类中有private成员,且构造函数是虚函数(需子类中重写)
通过public继承的子类
这时子类需重写父类的构造函数,问题便出现了,怎么初始化怎么构造父类的private成员?因为它是private权限的,子类通过public继承无法访问
这种情况父类的所有成员只能是由父类的构造函数来构造,子类构造函数执行之前先调用直接父类的构造函数(也就是C++正常的语义处理方式)
[解决办法]
1.没有需求,每个类的名字都不一样。
2.如果构造函数有虚函数,那么其中一种实现方式会发生覆盖。
而构造函数构造继承类的同时,也要先构造基类部分,这个时候无法构造基类(基类构造被覆盖)。