C++隐藏名字

如果派生类中新增一个成员变量,该成员变量与基类中的成员变量同名,则新增的成员变量就会遮蔽从基类中继承过来的成员变量。同理,如果派生类中新增的成员函数与基类中的成员函数同名,则该新增的成员函数就会遮蔽从基类中继承过来的成员函数。

举个例子:

#include<iostream>

using namespace std;

class basic

{

public:

void setx(int a){x = a;}

void sety(int b){y = b;}

int getx(){return x;}

int gety(){return y;}

private:

int x;

int y;

};

class derived : public basic

{

public:

void setx(char *a){x = a;}

char* getx(){return x;}

private:

char * x;

};

int main()

{

derived d1;

d1.setx("class"); //OK

d1.setx(50); //compile error

d1.basic::setx(50); //OK

return 0;

}

basic 基类中定义了一个成员变量 x,该变量是 int 型,与之对应的成员函数是 setx() 和 getx() 函数。而 derived 派生类中同样定义了一个成员变量 x,而它是 char 指针类型,与之对应的成员函数是 setx() 和 getx() 函数。主函数中定义了 derived 类的对象 d1,我们在调用 setx(char *) 函数时,没有问题。接着又调用从基类中继承过来的 setx(int) 函数,结果编译出错。最后通过类名来调用基类继承过来的 setx(int) 函数,编译通过。

在派生类 derived 中,setx(char *) 与基类继承过来的 setx(int) 函数同名,派生类新增的函数 setx(char *) 遮蔽了从基类继承而来的 setx(int) 函数。如此一来,通过 d1.setx(50) 调用 setx(int) 是不成功的,故而出现编译错误,正确的调用方法是通过类名来调用d1.basic::setx(int)。

从上例中我们可以看出,被遮蔽了的基类的成员变量或成员函数并非是没有继承过来,而仅仅是被派生类的同名成员变量和成员函数给遮蔽了,调用的时候需要用到类名加上域解析操作符。

https://www.zhihu.com/people/15189215673

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 隐藏进程是一种隐藏计算机系统中正在运行的进程的方法,目的是为了防止被探测和关闭。下面是一些可能的思路来隐藏进程: 1. 修改进程名:通过修改进程的名字,使其在任务管理器或进程监控工具中变得不容易被察觉和发现。可以通过修改进程名字的方式,使其与系统中其他普通进程的名称相似或者更改为一些无害的进程名称,以此来隐藏进程的存在。 2. 修改进程属性:通过修改进程的属性,可以将其设置为隐藏或系统进程,并且不在任务管理器等工具中显示。这样做可以使进程不容易被察觉,保护进程免受关闭的风险。 3. 加载驱动程序:通过加载驱动程序来隐藏进程,驱动程序可以通过修改操作系统的内核或者系统调用,来隐藏正在运行的进程。这种方法相对复杂,需要对操作系统内部有深刻的理解。 4. 使用Rootkit技术:Rootkit是一种恶意软件,可以修改操作系统的核心组件,从而隐藏恶意进程。它可以修改系统API,使得在进程列表中看不到指定的进程。Rootkit技术风险较高,但也是一种隐藏进程的方法。 需要注意的是,隐藏进程可能违反计算机安全政策和法律法规,因此在使用这些方法之前,需要确保自己的行为合法合规,遵守计算机安全规范和法律法规。 ### 回答2: 隐藏进程是指将某个进程在系统中不显示或屏蔽起来,使其在任务管理器或进程列表中不可见。以下是隐藏进程的一些思路: 1. 修改进程名:通过修改进程名可以使其在任务管理器或进程列表中显示为其他名称,从而隐藏起来。可以使用专门的工具或编程技巧来实现。 2. 修改进程属性:通过修改进程的属性,如PID (Process ID) 或进程描述符(Process Descriptor)可以使其不被系统所识别,从而实现隐藏进程的效果。 3. 使用Rootkit技术:Rootkit是一种恶意软件,可以对操作系统核心进行修改,从而隐藏进程并在系统中留下后门。它可以修改系统函数、Hook系统调用等来实现对进程的隐藏。 4. 修改注册表或系统配置文件:通过修改注册表或系统配置文件,可以使系统无法检测到特定进程的存在,从而达到隐藏进程的目的。 5. 使用虚拟化技术:通过在虚拟环境中运行进程,可以隐藏其在宿主系统中的存在。虚拟化技术可以创建一个隔离的环境,让进程在其中运行,不会在宿主系统中留下痕迹。 需要注意的是,隐藏进程并非一种良性的行为,通常被恶意软件或黑客用来逃避检测、传播病毒或进行攻击等不法目的。对于正常的系统管理和安全防护来说,隐藏进程是一种不可接受的行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值