**C++** 刷题笔记三

&1:C++中函数的复写和重载冲突问题

子类函数对积累函数进行复写(覆盖)隐藏:隐藏是指派生类的函数屏蔽了与其同名的基类函数。注意只要同名函数,不管参数列表是否相同,基类函数都会被隐藏。可以通过类的作用运算符访问积累中被隐藏的方法和数据。

#include<iostream>
using namespace std;

class first
{
public:
	first(){
		a = 3;
	};
	void output(){
		a = 1;
		cout<<"a="<<a<<endl;
	}
private:
	int a;

};
class second:public first
{
public:
	second():first(){
	};
	//对first中的函数进行重写,基类中的output函数被隐藏
	//当定义子类对象时,只能直接调用子类output,类作用域运算符调用基类 
	void output(int b){
		cout<<"b="<<b<<endl;
	}
	void output(){
		cout<<"c="<<3<<endl;
	}
private:
};

int main(){
	second test;
	test.first::output();//这应该是一种强制类型转换(不要与java混淆!) 
	test.output(3);
	cout<<"------------------"<<endl;
	first *test1;
	test1 = new second;//这里发生了强制类型转换吧 
	test1->output();//这个函数是指向基类的函数的 
	
	return 0;
}


其中在类second函数中,不存在没有参数的output,因为重写已经覆盖掉first中函数output()

如果想要调用基类中的无参函数需要使用类作用域运算符


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值