C++细节学习之类的实例化
来源:互联网 发布:苹果mac电脑办公软件 编辑:程序博客网 时间:2024/05/22 00:47
C++的实例化跟Java和C#的不一样,Java和C#的实例化都是直接用new或getInstance()实现。但是C++使用new是返回一个指针。
class Base{ public: Base(){} Base(int i){} void func(){} private:};Base* p=new Base();Base b1; //okBase b2(1); //okBase b3(); //error,不需要括号Base b3=new Base(); //error,返回的是指针//调用函数b1.func(); //okp->func(); //ok(*p).func(); //okb1->func(); //errorp.func(); //error
经由指针调用函数和实例化对象来调用函数有什么差别呢?
指针是动态完成调用函数,即是,首先得看该函数是不是虚函数,若是虚函数,就调用它指向对象的函数;如果不是虚函数,就调用该类型的函数。
而实例化对象时不管是不是虚函数,都是调用该类型的函数
//假设两个类,一个A,一个B,B是A的子类,A有两个函数 virtualfunc()//和nonvirtualfunc().B重写了这两个类A* P;A a;B b;a.virtualfunc(); //调用A::virtualfunc()a.nonvirtualfunc(); //调用A::nonvirtualfunc()b.virtualfunc(); //调用B::virtualfunc()b.nonvirtualfunc(); //调用B::nonvirtualfunc()p=&a;p->virtualfunc(); //调用A::virtualfunc(),虚函数调用指向的对象p->nonvirtualfunc(); //调用A::nonvirtualfunc(),有指针类型决定p=&b;p->virtualfunc(); //调用B::virtualfunc(),虚函数调用指向的对象p->nonvirtualfunc(); //调用B::nonvirtualfunc(),有指针类型决定
0 0
- C++细节学习之类的实例化
- Objective-C语言学习之类和实例
- 学习C++(1)之类的拷贝构造
- Java之类实例化的顺序
- 黑马程序员——Objective-C学习之类的继承
- 阿里校招之类实例化的顺序
- J2SE(七)Java之类的实例化
- C语言学习中遗漏的细节
- c语言的一些细节学习
- Java调用C#WEBSERVICE需要注意的细节及实例
- Java学习之类的属性
- UML之类图的学习
- Python之类(Class)的学习
- OC学习之类的进阶
- 对象族谱之类对象实例化过程
- 对象族谱之类实例化过程
- C++之类,类的数组,一次实例化多个类的实例。
- 黑马程序员----Objective-C学习笔记之类的本质与SEL类型
- Oracle建立表空间和用户
- 集成微信第三方登录功能获取微信用户信息
- 外包物料成本核算时的供应商确定
- 2015-05-28
- Hibernate(HQL/SQL)查询结果(Object)转换为实体类型
- C++细节学习之类的实例化
- POJ 1942-Paths on a Grid(组合数学)
- 实训C++语言设计——继承与派生
- 要正确的为tap加上tag值
- AOP--Spring AOP
- Universal-Image-Loader解析
- 我的英语
- 淘宝Tengine web服务器介绍
- 防止过拟合以及解决过拟合