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();

上面就能正常访问。

posted @   double64  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示