如果有一个基类:
class Dog
{
public:
virtual ~Dog() {}
void show(int a)
{
cout << "我是一只狗!" << a << "岁" << '\n';
}
void mysong()
{
cout << "哈哈哈..." << '\n';
}
private:
void mylang()
{
cout << "汪汪汪..." << '\n';
}
};
私有继承不能隐式转换
如果私有继承它:
// 骚狗
class Sg :private Dog
{
public:
};
在用户端使用,如下使用会报错:
//Dog *sd = new Sg; // 这样是不行的,私有继承都不能访问,然后自动就不行了。
共有继承,可以用 using 讲隐藏的声明释放出来
// 哮天犬
class Xtq :public Dog
{
public:
void show(int a, double b)
{
cout << "继承类中的,a 和 b:" << a << " " << b << '\n';
}
using Dog::show;
//using Dog::mylang; // 这个不行,他本身在基类中不可访问。
};
// 大拖
class Dt :private Dog
{
public:
using Dog::mysong;
};
外部用户就可以正常的访问到:
Dog *d = new Xtq;
d->show(1);
Xtq *x = dynamic_cast<Xtq *>(d);
x->show(1, 2);
x->show(11);
Dt dt;
dt.mysong();
上面就能正常访问。
标签:Xtq,show,class,Dog,C++,隐藏,释放出来,public From: https://www.cnblogs.com/huvjie/p/18683576