C语言中,如何将virtual虚函数改写为一个长尾?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1646个文字,预计阅读时间需要7分钟。
探讨C++中虚拟函数virtual有无的问题,对比virtual+无虚拟函数的使用于解决动态多态+问题,虚拟函数的作用是允许在派生类中重新定义与基类同名的函数,并通过基类指针或引用访问,实现多态。
探讨 C++ 虚函数 virtual
有无虚函数的对比
C++ 中的虚函数用于解决动态多态问题,虚函数的作用是允许在派生类中重新定义与积累同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。
首先写两个简单的类,类 B 继承自类 A,即 A 是基类,B 是派生类。
class A{ public: void print(){ cout << "A" << endl; } }; class B : public A { public: void print(){ cout << "B" << endl; } }; int main() { B b; //创建一个 B 类对象 b; A &a = b; //a 是 b 的一个 A 类引用; A *pa = &b; //pa 是一个指向 A 类对象的指针; a.print(); pa->print(); b.print(); return 0; }
程序中,A 类和 B 类均定义了一个同名函数 print ,但两个函数的功能不同,编译系统按照同名覆盖原则决定调用对象。
另外一点,引用的本质是指针常量,可以认为 a,pa 都指向了 b。
本文共计1646个文字,预计阅读时间需要7分钟。
探讨C++中虚拟函数virtual有无的问题,对比virtual+无虚拟函数的使用于解决动态多态+问题,虚拟函数的作用是允许在派生类中重新定义与基类同名的函数,并通过基类指针或引用访问,实现多态。
探讨 C++ 虚函数 virtual
有无虚函数的对比
C++ 中的虚函数用于解决动态多态问题,虚函数的作用是允许在派生类中重新定义与积累同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。
首先写两个简单的类,类 B 继承自类 A,即 A 是基类,B 是派生类。
class A{ public: void print(){ cout << "A" << endl; } }; class B : public A { public: void print(){ cout << "B" << endl; } }; int main() { B b; //创建一个 B 类对象 b; A &a = b; //a 是 b 的一个 A 类引用; A *pa = &b; //pa 是一个指向 A 类对象的指针; a.print(); pa->print(); b.print(); return 0; }
程序中,A 类和 B 类均定义了一个同名函数 print ,但两个函数的功能不同,编译系统按照同名覆盖原则决定调用对象。
另外一点,引用的本质是指针常量,可以认为 a,pa 都指向了 b。

