首页 > 编程语言 >C++ 如何讲隐藏的函数释放出来

C++ 如何讲隐藏的函数释放出来

时间:2025-01-21 14:42:35浏览次数:1  
标签:Xtq show class Dog C++ 隐藏 释放出来 public

如果有一个基类:

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

相关文章

  • IAT 隐藏和混淆
    一、介绍导入地址表(IAT)包含有关PE文件的信息,例如使用过的函数和导出它们的DLL。此类信息可用于对二进制文件进行签名和检测,如下图所示PE文件导入被认为高度可疑的函数二、隐藏混淆方法(1)IAT隐藏和混淆—方法1自定义函数可以在运行时使用 GetProcAddress、GetM......
  • Ubuntu 22.04上编译安装C++ libconfig库
    一、前言libconfig是一个C/C++配置文件解析库,支持读取和写入配置文件。它使用了一种简单易懂的语法,非常适合用于各种项目的配置管理。本文将详细介绍如何在Ubuntu22.04上编译和安装libconfig库。二、环境准备在开始编译安装libconfig之前,需要确保系统已经安装了必要的开发工具......
  • C++template模板
    目录函数模板(FunctionTemplate)示例:类模板(ClassTemplate)示例:模板参数(TemplateParameters)非类型模板参数示例:模板特化(TemplateSpecialization)示例:C++中的模板(Template)是一种强大的特性,允许程序员编写与类型无关的代码。模板可以用于函数和类,使得代码更加通用和可......
  • 【C++提高篇】—— C++泛型编程之模板基本语法和使用的详解
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、模板的概念二、函数模板2.1函数模板的使用2.2函数模板注意事项2.3普通函数与函数模板的区别2.4普通函数与函数模板的调用规则2.5模板的局限性三、类模板3.1类模板的使用3.2类模板......
  • (2024最新毕设合集)基于SpringBoot的游乐园管理系统-69394|可做计算机毕业设计JAVA、PHP
    目录1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.1.1经济可行性2.1.2技术可行性2.1.3操作可行性2.2系统流程分析2.2.1系统开发流程2.2.2用户登录流程2.2.3系统操作流程2.2.4添加信息流程2.2.5......
  • C++ 模板(函数模板与类模板)
    原文链接:https://www.cnblogs.com/1873cy/p/18398002模板模板介绍#C++提供了函数模板(functiontemplate)。所谓函数模板。实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡事函数体相同的函数都可以使用这个模板......
  • 你所不知道的 C/C++ 宏知识——基于《C/C++ 宏编程的艺术》
    前言刚学C++的时候,就知道它糅合了四种编程模式:基于预处理器的宏、基于C语言的面向过程、基于类的面向对象、以及基于模板的泛型编程。其中,宏和模板元编程因为是在编译期出结果,能有效提升程序运行期性能,有着独特的价值。宏的缺陷之前了解的宏编程,大多数在数说它的缺陷,以及如......
  • 50个C++经典面试题(01~10)
    为什么要研究面试题,因为研究题目可以让面试者面试时看起来像个专家。本博文将给出50个面试题,题目涉及初级、中级、高级。下面来看下01~10题01:C++是什么?C++的优势是什么?C++是一门面向对象语言,它的存在的目的是为了克服C语言的短板。其中面向对象又涉及如下几个概念:polym......
  • C++auto和decltype的用法
    在C++中,auto和decltype是两个非常有用的关键字,它们帮助程序员更方便地处理类型推导和类型声明。以下是它们的具体用法:autoauto关键字用于自动类型推导,即让编译器根据初始化表达式来推断变量的类型。这在处理复杂类型或模板编程时特别有用,因为它可以简化代码并减少类型错误。......
  • 简单日志宏实现(C++)
    意义:快速定位程序运行逻辑出错的位置。背景:项目在运行中可能会遇到各种问题,而出问题是开发过程中不可避免的一部分。关键在于能够有效地找到,并解决问题。解决问题的方式:GDB调试:适用于:程序崩溃后的定位。局限性:逐步调试过程繁琐且耗时较长。系统运行日志分析:方法:在......