C++ 如何讲隐藏的函数释放出来
如果有一个基类:
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();
上面就能正常访问。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了