学习笔记(二):虚函数与纯虚函数

C++ 中关键字:virtual 修改函数;

虚函数声明:virtual void myFunc(int nPara1, int nPara2){};声明后子类可以去重写基类此方法也可以不重写,不重写将继承基类此属性;

纯虚函数声明:virtual void myFunc(int nPara1, int nPara2)=0;声明后子类必须重写此方法,类的接口,子类中也需要含有此属性;

#include <iostream>
using namespace std;

class VirtualClass
{
public:
	virtual void Demo(void) = 0;//包含纯虚函数的类为抽象类,抽象类不能构造对象
	virtual void Base(void){ cout << "Base: this is base class!" << endl; }//虚函数,只包含虚函数的类可以构造对象
};

void VirtualClass::Demo(void)//纯虚函数也可以在基类中实现
{
	cout << "Demo: this is base class!" << endl;
}

class SubClass : public VirtualClass
{
public:
	void Demo(void)//子类实现父类定义的接口,纯虚函数,子类必须实现
	{ 
		VirtualClass::Demo();//实现后的纯虚函数调用
		cout << "Demo:this is child class!" << endl ;
	}
	void Base(void)//子类重写父类的虚函数,如果不重写,将调用父类的Base函数
	{ 
		cout << "Base: this is child class!" << endl; 
	}
	/*
	*重写:子类覆盖父类已有的函数;
	*重载:一个类中,多个同名函数参数不同,函数返回类型不能决定;
	*/
	int  myAdd(int nValueA, int nValueB)
	{
		return nValueA + nValueB;
	}

	float myAdd(float fValueA, float fValueB)
	{
		return fValueA + fValueB;
	}
};

int _tmain(int argc, _TCHAR* argv[])
{
	VirtualClass* m_virtual = new SubClass();//多态:基类指针可以访问子类函数
	SubClass* m_child = new SubClass();
	m_virtual->Demo();
	m_virtual->Base();
	cout << "myAdd: " << m_child->myAdd(3, 5) << endl;
	cout << "myAdd: " << m_child->myAdd(1.4f, 5.5f) << endl;
	system("pause");
	return 0;
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值