gpt4 book ai didi

c++ - 在私有(private)继承中公开构造函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:55:28 25 4
gpt4 key购买 nike

在私有(private)继承过程中,Base类的公共(public)成员变量或成员函数可以赋值回Derived中的公共(public)访问说明符。但是我们可以对 Base 类的公共(public)构造函数做同样的事情吗?

我试过如下,

#include <iostream>

using namespace std;

class base
{
public:
base(){}
void print(){ puts("In print"); }
};

class derived : private base
{
public:
base::print;
base::base; /* Throws an error - Declaration doesnt declare anything*/
void display(){ puts("In display"); }
};

int main()
{
derived dObj;
}

它抛出一个错误“声明没有声明任何东西”我尝试的有效吗?

最佳答案

您可以使用using 语法。但是 using 基类构造函数没有多大意义。我猜你想初始化你的基类,对吧?你可以这样做:

#include <iostream>

using namespace std;

class base
{
public:
base(){}
void print(){ puts("In print"); }
};

class derived : private base
{
public:
using base::print;
derived() : base() {} // initialize base class
void display(){ puts("In display"); }
};

int main()
{
derived dObj;
}

关于c++ - 在私有(private)继承中公开构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10478970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com