Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 构造函数中的虚函数调用_C++_Virtual Functions - Fatal编程技术网

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次了。请看右边的相关帖子===>@各位,很抱歉再次问这个问题。我应该好好搜索一下。我会把它关上的。