C++ 虚函数的定义



本文转自:http://blog.csdn.net/Ocean2006/article/details/5326187

http://blog.csdn.net/winson_jason/article/details/7256878

需要实例化类的虚函数必须有定义,而仅仅定义带有虚函数的类且虚函数没有实现,该类编译是可以通过的!

     纯虚函数出现在接口类中,并赋值为0,不要为该函数分配函数地址,从而阻止类的实例化!纯虚函数是没有定义的,如果实现了也不是纯虚函数啦!

     一般的成员函数可以只有声明,前提是在应用中不能调用该函数,否则会因找不到定义产生连接错误!

 

     实例化类的虚函数必须有定义,原因如下:有虚函数作为成员函数的类, 它的实例化-对象, 在运行过程分配到的内存不止是它的成员数据, 还有一个指向该类虚函数表(vtable)的指针, 虚函数表中的每个数据项都是一个虚函数的入口地址; 如果一个对象的虚函数只有声明而没有实现, 就会出现这个虚函数表找不到本应作为其数据项之一的某函数的入口地址, 虚函数表在运行前不能装载完成, 所以产生连接错误!


参考资料★ http://www.ok2002.com/cc/cc/v.asp?r=a2273562170518

//C++ 纯虚函数接口如何定义?使用时应注意什么?

/*--
定义纯虚函数接口:virtual void f()=0;  //只是提供接口,实现留给继承类
使用时应注意:子类必须要实现该函数
--*/

#include<iostream>
using namespace std;

class A
{
public:
	virtual void func()=0;//定义纯虚函数接口
};

class B:public A
{
public:
	virtual void func()//子类必须要实现该函数
	{
		cout<<"ok2002.com"<<endl;
	}
};

void main()
{
	B rs;
	rs.func();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值