欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

C++ 中的类(class)和对象(object)详解-虚函数

最编程 2024-02-26 09:55:21
...

虚函数(virtual function)是使用关键字virtual声明的成员函数。关键字virtual只用在声明的时候写,不用在定义的时候写(派生类中继承自基类的虚函数,关键字virtual省不省略都可以)。

格式大致如下:

class A
{
	publicvirtual int func();
};

int A::func()
{
	//函数体
}

关于虚函数需要注意几点:

  1. 虚函数一般不声明为内联函数(不会报错,但是内联函数是静态联编,而虚函数必须动态联编,所以没有声明的意义)。
  2. 构造函数不能声明为内联函数(虚函数是可以在基类和所有派生类中使用,而构造函数并不会被继承;而且二者概念冲突,对象没生成之前无法表现对象的多态)。
  3. 静态成员函数不能被声明为虚函数。
  4. 友元函数不能声明为虚函数。
  5. 全局函数不能声明为虚函数。
  6. 派生类重写基类的虚函数实现多态,要求函数名、参数、以及返回值类型要完全相同。
  7. 不要在构造函数和虚构函数中调用虚函数。因为此时对象不是完整的。
  8. 最好将析构函数声明为虚函数。

虚析构函数

虚析构函数就是在析构函数前面加上关键字virtual。只要基类的析构函数被声明为虚函数,派生类的析构函数都自动成为虚函数。

使用虚析构函数的目的是为了在对象消亡时实现多态。具体来说,设置了虚析构函数,这样可以保证能够释放所有的内存空间,避免造成内存泄露。

纯虚函数

纯虚函数就是声明在基类中的虚函数,由派生类根据需要给出各自的定义。纯虚函数只有函数名而没有代码,所以不能调用基类中这个函数。

纯虚函数的一般格式如下:

virtual 函数类型 函数名(参数)=0

没有大括号,必须要有=0

抽象类

一个类可以说明多个纯虚函数,包含了纯虚函数的类被称为抽象类。抽象类的派生类中,如果没有给出全部纯虚函数的定义,那么派生类继续是抽象类。
一个抽象类只能作为基类,不能创建抽象类的对象。但是可以指定抽象的指针和引用。这样指针和引用可以指向并访问派生类的成员,这种访问具有多态性。也就是可以访问不同类的函数名相同的函数。

推荐阅读