C++ 构造函数中的虚函数调用
我有这个布局C++ 构造函数中的虚函数调用,c++,virtual-functions,C++,Virtual Functions,我有这个布局 class Base { public: virtual void Initialize() { // base Implementation } Base() { Initialize(); } }; class der_1 : public Base { public: der_1() : Base() {} virtual void Initialize() { // der_1 Implementation } }; class
class Base {
public:
virtual void Initialize() { // base Implementation }
Base() { Initialize(); }
};
class der_1 : public Base
{
public:
der_1() : Base() {}
virtual void Initialize() { // der_1 Implementation }
};
class der_2 : public Base
{
public:
der_2() : Base() {}
virtual void Initialize() { // der_2 Implementation }
};
现在,每当我创建类deru 1或deru 2的新对象时,我都会调用Initialize的基本实现。显然,我不能在创建对象时调用虚拟函数
现在,我在创建deru 1或deru 2类型的对象之后调用Initialize函数,这对我来说似乎不是一种正确的做法,因为每次创建对象时都会将Initialize函数调用耦合起来
有人能给我一些更好的选择吗?在构造函数调用期间,对象仍然只是基类的一个实例,因此它确实知道重载的初始化函数 这里有一些处理这种情况的建议:
我不会浪费时间写一个恰当的答案,因为我相信这个问题已经被回答了100次了。不能在构造函数中调用虚拟函数。初始化一个非虚函数并在每个构造函数中调用它,这样就可以了。或者在构造函数之后调用它。这两个方法中的一个…重复的:或:@sud03r:当您已经在编写构造函数时,创建用于初始化的虚拟方法有什么意义?只要在构造器中完成工作,就可以了!它已经被问了100次了。请看右边的相关帖子===>@各位,很抱歉再次问这个问题。我应该好好搜索一下。我会把它关上的。