对虚函数的初步理解
来源:互联网 发布:csol由于网络设定问题 编辑:程序博客网 时间:2024/05/19 18:42
以上今天的学习总结,欢迎大家指点,新手学习中......
在某基类中声明为virtual 并在一个或多个派生类中被重新定义的成员函数。
用法格式:virtual 函数返回类型 函数名(参数表){函数体}。
实现了多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数。
简单的例子:
#pragma once#include<iostream>
using namespace std;
class CA
{
public:
virtual void fun(){ cout << 1 << endl; }
virtual void fun2(){ cout << 2 << endl; }
CA(){}
~CA(){}
};
class CB :public CA
{
public:
void fun(){ cout << 3 << endl; }
void fun2(){ cout << 4 << endl; }
CB(){}
~CB(){}
};
using namespace std;
#include"B.h"
int main()
{
cout << sizeof(CA) << endl;//因为类中有虚函数存在,所以编译器就会为他们两个分别插入一段你不知道的数据,那段数据叫做vptr指针,所以大小为4
cout << sizeof(CB) << endl;
CA a;
CB b;
CA *p1 = &a;
CA *p2 = &b;
p1->fun();
p2->fun2();
}
结果:4
4
1
4
说明:指向基类的指针在操作他的多态类的对象时,会根据不同的类对象,调用其相应的函数,这个函数就是虚函数。
多重混合继承: 虚基类:
当在多条继承路径上有一个公共的基类,在这些路径中的某几条汇合处,这个公共的基类就会产生多个实例(或多个副本),
若只想保存这个基类的一个实例,可以将这个公共基类说明为虚基类。
虚函数基类:一个类被虚拟继承.在继承方式前virtual;
保证派生类虚基类只有一份拷贝;
在派生类构造函数中需要直接调用虚基类(不管是否是直接基类)构造函数(隐式或者显式:构造函数带参);
虚基类的构造函数优先调用。
0 0
- 对虚函数的初步理解
- 对Oracle分析函数的初步理解
- 对MVC的初步理解
- 对调试的初步理解
- 对DirectUI 的初步理解
- 对MVC的初步理解
- 对指针的初步理解
- 对ZDO的初步理解
- 对ThreadLocal的初步理解
- 对指针的初步理解
- 对Redis的初步理解
- 对maven的初步理解
- 对指针的初步理解
- C++虚函数的初步基本理解
- 对虚函数的理解
- 对虚函数的理解
- 我对tcp的初步理解
- 我对SNS游戏的初步理解
- 我的第一篇博客
- IMX6Q LTIB 安装编译错误的解决办法
- Gson搭配TypeToken实现复杂数据的解析
- Binary Tree Paths
- ubuntu下搭建android开发环境(四)核心篇安装AndroidStudio、sdk、jdk(by 星空武哥)
- 对虚函数的初步理解
- 静态库,共享库,动态加载库
- TestNG的IInvokedMethodListener监听器详解
- Nginx+Tomcat+Redis负载均衡集群服务搭建
- 数据结构与算法(9)顺序查找
- UVA 10817 Headmaster's Headache
- Ubuntu上安装oracle java 7
- 拆机记(1)
- ASP.NET视频知识总结 chapter1 & chapter2