Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.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 Derived:public Base{ public: Derived(...):Base(...){} } 在什么情况下或有什么原则要求我们在派生的ctor初始化列表中显式初始化基?感谢如果我们需要将派生构造函数的参数传递给基构造函数,可以使用它 class foo { public: foo() {} foo( int num ) {} }; class bar : public foo {

伙计们。我看到了以下几种情况:

class Derived:public Base{

public:
    Derived(...):Base(...){}
}

在什么情况下或有什么原则要求我们在派生的ctor初始化列表中显式初始化基?感谢

如果我们需要将派生构造函数的参数传递给基构造函数,可以使用它

class foo
{
    public:
        foo() {} 
        foo( int num ) {}
};

class bar : public foo
{
    public:
        bar(int barNum): foo(barNum) {}
};

如果我们需要将派生构造函数的参数传递给基构造函数,可以使用它

class foo
{
    public:
        foo() {} 
        foo( int num ) {}
};

class bar : public foo
{
    public:
        bar(int barNum): foo(barNum) {}
};

如果要使用参数调用基构造函数

如果要使用参数调用基构造函数

如果基类中有多个构造函数(基本上是入口点),
因此,您可以选择调用它们中的任何一个。

如果基类中有多个构造函数(基本上是入口点),
因此,您可以选择调用它们中的任何一个。

如果不显式初始化基类,将调用默认构造函数。

如果不显式初始化基类,将调用默认构造函数。

一个好的编码标准将建议您始终在构造函数的初始化列表中初始化基类


如果基类的构造函数需要一些参数,那么您必须这样做。

一个好的编码标准会建议您始终在构造函数的初始化列表中初始化基类


如果基类的构造函数需要一些参数,那么您必须这样做。

接受参数的构造函数不一定是“非默认”构造函数。Oops。。。不知何故,我不能放弃你的投票权。。。它说你必须编辑它一次!接受参数的构造函数不一定是“非默认”构造函数。。。不知何故,我不能放弃你的投票权。。。它说你必须编辑它一次!作为总结,带参数的调用基向量和指定特定向量是其在初始化列表中显示的常用方法。作为总结,带参数的调用基向量和指定特定向量是其在初始化列表中显示的常用方法。