码迷,mamicode.com
首页 >  
搜索关键字:虚函数    ( 1942个结果
C++ Primer 学习笔记_101_特殊工具与技术 --运行时类型识别
特殊工具与技术 --运行时类型识别 引: 通过下面两个操作符提供RTTI: 1.typeid操作符,返回指针或引用所指对象的实际类型。 2.dynamic_cast操作符,将基类类型的指针或引用安全地转换为派生类型的指针或引用。 对于带虚函数的类,在运行时执行RTTI操作符,但对于其他类型,在编译时计算RTTI操作符。 当具有基类的引用或指针,但需要执行不是基类组成部分的派生类操作的时候,需要动态的强制类型转换。通常,从基类指针获得派生类行为最好的方法是通过虚...
分类:编程语言   时间:2014-07-19 11:45:04    阅读次数:258
c/c++面试题(9)linux方向
1.简述用虚函数实现的多态的原理: 编译器发现一个类中有虚函数的时候,便会立即为此类生成虚函数表vtable.虚函数表的各 表项为指向对应虚函数的指针.编译器还会在此类中隐含插入一个指针vptr(对vc编译器来 说,它插在类的第一个位置上)指向虚函数表.调用此类的构造函数的时候,在类的构造函数 中,...
分类:编程语言   时间:2014-07-19 09:24:27    阅读次数:242
C++构造函数和析构函数能否声明为虚函数?(转载)
构造函数为什么不能是虚函数从存储空间角度,虚函数对应一个指向vtable虚函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造...
分类:编程语言   时间:2014-07-19 00:05:20    阅读次数:321
C++之类析构函数为什么是虚函数
请说明下列代码的输出,并解释原因。#includeclass A{public: virtual ~A();};A::~A(){ printf("delete A\n");}class B : public A{public: ~B();};B::~B(){ printf("...
分类:编程语言   时间:2014-07-18 20:03:10    阅读次数:281
【c++】虚函数描写叙述符override
在C++11中为了帮助程序猿写继承结构复杂的类型,引入了虚函数描写叙述符override,假设派生类在虚函数声明时使用了override描写叙述符,那么该函数必须重载其基类中的同名函数,否则代码将无法通过编译。我们来看一下如代码清单2-25所看到的的这个简单的样例。代码清单2-25struct Ba...
分类:编程语言   时间:2014-07-18 19:04:32    阅读次数:291
C++基类一定要写虚函数!!!
这是个提醒,算是吧!如果详细原理过程,可能会有一个大篇幅。但这里不想多加赘述,只说说它的破坏力!最近写了个图像处理框架,要做个基类来handle众多子类,写之前一直申称:要注意内存管理,写好析构函数。谁知最后还是偏偏忘记了将基类析构函数virtual化,结果在操控基类释放内存的一段程序中,发现基类释...
分类:编程语言   时间:2014-07-18 12:03:57    阅读次数:261
代码的优化
局部优化:1、去除不需要的局部对象2、尽量通过引用,而不是传值,来处理对象3、把类中的小函数设置为内联函数4、对计算的处理: 一定会有的计算: 提前计算 (小的范围,计算量比较小) 可能会有的计算:延迟计算 不会有的计算: 不计算 5、利用模板代替虚函数6、尽量使用简单的数据类型7、不用使用虚函数的...
分类:其他好文   时间:2014-07-17 22:39:01    阅读次数:232
虚函数的使用 以及虚函数与重载的关系, 空虚函数的作用,纯虚函数->抽象类,基类虚析构函数使释放对象更彻底
为了访问公有派生类的特定成员,可以通过讲基类指针显示转换为派生类指针。也可以将基类的非静态成员函数定义为虚函数(在函数前加上virtual) 1 #include 2 using namespace std; 3 4 class base{ 5 public: 6 /*virtual*/ ...
分类:其他好文   时间:2014-07-17 18:04:41    阅读次数:300
【深度探索c++对象模型】Function语义学之虚函数
虚函数的一般实现模型:每一个class有一个virtual table,内含该class之中有作用的virtual function的地址,然后每个object有一个vptr,指向virtual table。识别class是否支持多态,唯一恰当的方法是看它是否有virtual function,只要...
分类:编程语言   时间:2014-07-17 14:21:11    阅读次数:236
final和override含义
这两个东西是C++11中引入的,属于保留字,不是关键字,只有在特定的位置才会有效果(函数参数列表后),在其它地方甚至可以把它们作为变量名。final:阻止虚函数被重写override:标识函数重写了基类虚函数,强调重写设计意图,加强可读性,并强制编译器检查该函数是否重写了基类虚函数参考链接:http...
分类:其他好文   时间:2014-07-16 15:51:38    阅读次数:181
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!