C++ virtual用法
来源:互联网 发布:linux打开图形界面命令 编辑:程序博客网 时间:2024/06/05 16:36
virtual关键字的作用:1.派生类可以通过重写来覆盖基类的虚拟函数,
当基类的指针指向派生类的对象时,调用函数调用的即是派生类中重写的虚拟函数,
至此便实现了面向对象的多态性
2.纯虚函数 virtual void play() = 0;充当接口的作用。其派生类必须重写纯虚函数,
否则会报错
3.虚拟继承 为了解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,
将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,
同一个函数名也只有一个映射。这样不仅就解决了二义性问题,也节省了内存,避免了数据不一致的问题。
class 派生类名:virtual 继承方式 基类名
当基类的指针指向派生类的对象时,调用函数调用的即是派生类中重写的虚拟函数,
至此便实现了面向对象的多态性
2.纯虚函数 virtual void play() = 0;充当接口的作用。其派生类必须重写纯虚函数,
否则会报错
3.虚拟继承 为了解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,
将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,
同一个函数名也只有一个映射。这样不仅就解决了二义性问题,也节省了内存,避免了数据不一致的问题。
class 派生类名:virtual 继承方式 基类名
virtual是关键字,声明该基类为派生类的虚基类。
#include "stdafx.h"#include<iostream>using namespace std;/* virtual关键字的作用:1.派生类可以通过重写来覆盖基类的虚拟函数,当基类的指针指向派生类的对象时,调用函数调用的即是派生类中重写的虚拟函数,至此便实现了面向对象的多态性2.纯虚函数 virtual void play() = 0;充当接口的作用。其派生类必须重写纯虚函数,否则会报错3.虚拟继承 为了解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数名也只有一个映射。这样不仅就解决了二义性问题,也节省了内存,避免了数据不一致的问题。class 派生类名:virtual 继承方式 基类名virtual是关键字,声明该基类为派生类的虚基类。*/class A{public:/*virtual A(){}*/virtual void sayHello(){ cout << "hello world.this is A"<<endl;}};class B :public A{public:void sayHello(){cout << "hello world.this is B" << endl;}};int _tmain(int argc, _TCHAR* argv[]){A *b=new B();b->sayHello();system("pause");return 0;}
#include "stdafx.h"#include"iostream"using namespace std;class Ifootball{virtual void play() = 0;virtual void myName() = 0;};class football :Ifootball{public:static string name;void play(){cout << "play";}void myName(){cout << "my name is football";}static void sayHello(){cout << "hello";}};int _tmain(int argc, _TCHAR* argv[]){football::name = "football";//类名::静态成员football::sayHello();football ff;ff.sayHello();ff.name = "football";ff.myName();ff.play();char a;cin >> a;return 0;}
阅读全文
0 0
- c++virtual
- Virtual和 Override用法
- virtual关键字用法总结
- c++ virtual的用法
- virtual的用法
- Virtual Environment用法详解
- C++ virtual用法
- 关于C#:abstract,virtual
- C++Virtual详解
- Virtual & Abstract (C++)
- C#virtual override new
- C++ virtual 继承
- C# 关键字--virtual
- c++------virtual const static
- C++virtual继承
- c++Virtual关键字
- C++:virtual关键字
- C#---virtual与abstract
- 1072. 开学寄语
- iOS11拍照闪退,保存图片闪退问题
- CS 300 BST Fixed Height DP(前缀和)
- 分享一个兼容多设备的蓝牙Lib框架封装思想(二)
- JavaScript和Java的区别
- C++ virtual用法
- NOIP2017 赛前总结
- c++基础之main函数的参数和返回值
- 完美居中
- win7下制作ubuntu安装u盘
- Spring Cloud介绍
- 1073. 多选题常见计分法
- bzoj1722 [Usaco2006 Mar] Milk Team Select 产奶比赛(树形dp)
- android 常见的内存泄漏