纯虚函数

博客介绍了C++中抽象类和纯虚函数的相关知识。拥有纯虚函数的类为抽象类,不能生成对象,只有实现纯虚函数的子类才能创建对象。纯虚函数只提供申明,是对子类的约束,属于接口继承,也是一种运行时多态,还给出了交换虚表指向的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

拥有纯虚函数的类就是一个抽象类,不能生成对象

(1)抽象类不能使用new出对象,只有实现了这个纯虚函数的子类才能new出对象。

(2)C++中的纯虚函数更像是“只提供申明,没有实现”,是对子类的约束,是“接口继承”。

(3)C++中的纯虚函数也是一种“运行时多态”。

简单使用:
class Animal
{
public:
	Animal(std :: string name) :mname(name){}
	virtual void bark() = 0;
	~Animal(){}
protected:
	std::string mname;
};
class Dog :public Animal
{
public:
	Dog(std::string name) :Animal(name){}
	void bark()
	{
		std::cout << mname << "  wang wang wang!" << std::endl;
	}
};
class Cat : public Animal
{
public:
	Cat(std::string name) :Animal(name){}
	void bark()
	{
		std::cout << mname << "  miao miao miao!" << std::endl;
	}
};
int main()
{
	Cat* pc = new Cat("cat");
	Dog* pd = new Dog("dog");

int* p11 = (int*)pc;
int* p22 = (int*)pd;

**int tmp = *p11;
*p11 = p22;
p22 = tmp;

pc->bark();
pd->bark();
return 0;
}

上面这三行代码是交换了pc和pd中虚表的指向,使得Cat wang wang wang ,Dog miao miao miao

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值