c++ - 在创建派生类对象时初始化基类成员的更好方法是什么?

标签 c++

方法一:通过派生类的构造函数初始化

class base {
protected:
    int no;
public:
    void showData() {
        cout << no;
    }
};

class der : public base {
public:
    der(int _no) {
        no = _no;
    }
};

方法二:通过基类的构造函数初始化

class base {
    int no;
protected:
    base(int _no) : no(_no){}

public:
    void showData() {
        cout << no;
    }
};

class der : public base {
public:
    der(int _no) : base(_no) {
    }
};

客户端代码:

der d(10);
d.showData();

如果有其他方法请告诉我

最佳答案

您应该使用第二种方法,原因之一是:如果基类成员是 private,则方法一将不起作用。看到派生类初始化不属于它的东西也很奇怪。

关于c++ - 在创建派生类对象时初始化基类成员的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7188827/

相关文章:

c++ - 如何重载操作数 << 以像 ostream 样式一样使用

c++ - QT .UI 显示.GIF?

c++ - 在 C++ 中使用流打印具有正确缩进的结构化对象

c++ - 与共享库链接时,向可执行文件添加了什么?

c++ - 在头文件中包含 "using namespace"语句是否可以?

c++ - strtok_s 未在此范围内声明

c++ - 为什么要有指针参数?

c++ - 在数组和循环方面需要帮助

c++ - C/C++中的位操作

c++ - 使用 C++ 解码 Adob​​e Flex Base64encoder 的输出