11.13 C++ virtual的用法巩固

virtual的用法巩固


当需要在派生类中重新定义基类的方法时,应在基类方法前使用关键字virtual,而派生类重新定义的方法自动被继承为虚方法,不过可以加上virtual前缀进行限定,以便区分派生类的哪些方法是虚方法。

不加virtual

#include<iostream>
using namespace std;

class instrument{
	public:
	void play()
		{
			cout<<"instrument"<<endl;
		}
}; 

class violin:public instrument{
	public :
	void	play(){
			cout<<"violin"<<endl;
		}
	
};

class piano:public instrument{
	public:
	void	play(){
			cout<<"piano"<<endl;
		}
};
int main(){
	violin v1;
	piano p1;
	instrument A;
	A=v1;
	A.play();
	A=p1;
	A.play();
	cout<<".........."<<endl;
	instrument *B;
	B=&v1;
	B->play();
	B=&p1;
	B->play();

}

instrument
instrument

instrument
instrument

加virtual


#include<iostream>
using namespace std;

class instrument{
	public:
	virtual	void play()
		{
			cout<<"instrument"<<endl;
		}
}; 

class violin:public instrument{
	public :
	void	play(){
			cout<<"violin"<<endl;
		}
	
};

class piano:public instrument{
	public:
	void	play(){
			cout<<"piano"<<endl;
		}
};
int main(){
	violin v1;
	piano p1;
	instrument A;
	A=v1;
	A.play();
	A=p1;
	A.play();
	cout<<".........."<<endl;
	instrument *B;
	B=&v1;
	B->play();
	B=&p1;
	B->play();
	return 0;
}

instrument
instrument

violin
piano

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值