Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.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++_Constructor - Fatal编程技术网

C++ 将参数传递给类外的基类构造函数

C++ 将参数传递给类外的基类构造函数,c++,constructor,C++,Constructor,我想在派生类之外定义构造函数。如何实现这一点。如果我在类中定义构造函数,它就会工作 感谢您的帮助 下面是我的代码 class Base { private: int var1; public: Base(); Base(int var1); ~Base(); void print() { cout<<"Base"<<endl;

我想在派生类之外定义构造函数。如何实现这一点。如果我在类中定义构造函数,它就会工作

感谢您的帮助

下面是我的代码

class Base
{
    private:
        int var1;
    public:
        Base();
        Base(int var1);
        ~Base();
        void print()
        {
            cout<<"Base"<<endl;
        }
};

class Derived:public Base
{
    private:
        int var2;
    public:
        Derived();
        Derived(int var2,int var1):Base(var1);
        ~Derived();
        void print()
        {
            cout<<"Derived"<<endl;
        }

};

Base::Base()
{
    cout<<"Constructing Base"<<endl;
}

Base::Base(int var1)
{
    cout<<"Constructing Base with "<<var1<<endl;
}

Base::~Base()
{
    cout<<"Destructing Base"<<endl;
}

Derived::Derived()
{
    cout<<"Constructing Derived"<<endl;
}

Derived::Derived(int var2,int var1):Base(var1)
{
    cout<<"Constructing Derived with "<<var2<<endl;
    this->var2 = var2;
}

Derived::~Derived()
{
    cout<<"Destructing Derived"<<endl;
}

int main()
{
    Derived d = Derived(2,1);
    d.print();

    return 0;
}

调用基类构造函数是实现。因此,它不属于类声明。将构造函数声明为

Derived(int var2, int var1);

但是您的实现很好。

在声明中,更改
Derived(intvar2,intvar1):Base(var1)
派生(intvar2,intvar1)。类声明之外的定义很好。
Derived(int var2, int var1);