关于c++的virtual关键字
来源:互联网 发布:为什么28岁不能学java 编辑:程序博客网 时间:2024/05/17 23:34
1.定义类函数
虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数,即用父类的指针调用子类的函数。
class A{public: virtual void foo() { cout << "A::foo() is called" << endl; }};class B: public A{public: virtual void foo() { cout << "B::foo() is called" << endl; }};A * a = new B(); //父类类型的指针指向子类类型的对象,从而实现父类调用子类函数。a->foo(); // a虽然是指向A的指针,但是被调用的函数(foo)却是B的
tips:
1.作为通常的原则,如果一个类定义了虚函数,那么它的析构函数就应当是virtual的。
2.友元函数 构造函数 static静态函数 不能用virtual关键字修饰;
普通成员函数 和析构函数 可以用virtual关键字修饰。
3.多态性
指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。C++支持两种多态性:编译时多态性,运行时多态性。
a.编译时多态性:通过重载函数实现
b 运行时多态性:通过虚函数实现。
2.纯虚函数
类似与java的接口,带有纯虚函数的类称为抽象类。抽象类不能被实例化。
class <类名> { virtual <类型><函数名>(<参数表>)=0; … };
例如:
class point { public: point(int i=0, int j=0) { x0=i; y0=j; } virtual void set() = 0; virtual void draw() = 0; protected: int x0, y0; };
3.虚继承
C++使用虚拟继承(Virtual Inheritance),解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题。
多重继承->二义性->虚拟继承解决
class 派生类: virtual 基类1,virtual 基类2,...,virtual 基类n{...//派生类成员声明};
0 0
- 关于c++的virtual关键字
- [C/C++]关于C++类成员函数的重载、覆盖、隐藏与virtual关键字
- C# 关键字--virtual
- c++Virtual关键字
- C++:virtual关键字
- C#的Virtual关键字
- virtual关键字的作用
- virtual关键字的使用
- [C++]static, virtual, const关键字
- C#.NET中new, override, virtual abstract关键字的区别
- C++、C#中 abstract 与 virtual关键字的区别联系
- C++、C#中 abstract 与 virtual关键字的区别联系
- 关于C#:abstract,virtual
- virtual 关键字 继承的使用
- 对virtual关键字的思考
- 关于 类的 virtual 实例 说明 (c#)
- 关于C语言中关键字的使用
- 关于C语言的关键字extern
- 【Linux】Linux下设置IP、掩码、网关
- iOS 保存图片或者视图到本地相册
- Fragment的存在与理解
- 如何解决Andorid内存溢出问题(大总结)
- StackTraceElement获取方法调用栈的信息
- 关于c++的virtual关键字
- 集合框架之map接口
- HTML的meta标签的一些功能
- Terminating app due to uncaught exception 'Cannot Install Constraint', reason: 'No common superview
- Unity3D UGUI中的dropdown控件使用总结
- mongo简介——BSON数据类型与它们的编号跟比较顺序
- 在javaweb中的jquery ajax中的traditional
- 操作系统试验记录
- 自定义ListView/GridView