1.面向对象的编程中,我们希望尽可能减少类之间的依赖行。这样能让类更加强健,更加容易维护。 但继承却与次背道而驰。 每个派生类十分依赖它的基类(或多个类),如果基类的接口发生改动,所以派生类都不得不为了适应基类的接口而改动。 (这是我们为什么总力争设计出几乎无需修改的基类) 2.动态绑定的开销。非虚 ...
分类:
其他好文 时间:
2017-03-23 12:40:12
阅读次数:
141
this对象是必须是用 new操作符分配的(而不是用new[],也不是用placement new,也不是局部对象,也不是global对象); delete this后,不能访问该对象任何的成员变量及虚函数(delete this回收的是数据,这包括对象的数据成员以及vtable,不包括函数代码); ...
分类:
其他好文 时间:
2017-03-22 12:44:38
阅读次数:
248
1. 重载:在相同作用域中,同名函数但参数列表不同,编译器将参数列表同函数名拼接在一起形成不同的符号,所以说重载必须参数列表不同,而不考虑返回类型。C++函数重载实现原理浅析。 2. 重写:父类虚函数与子类函数同名同参数列表,则为重写。 3. 隐藏:父类非虚函数与子类函数同名时,则父类非虚函数被隐藏 ...
分类:
其他好文 时间:
2017-03-22 00:50:02
阅读次数:
118
最近在浏览朋友写的代码,发现有一个细节非常值得学习,在这里将代码贴出来简单分享一下: pthread_create的定义如下: 新建线程从void *(*start_routine)(void *)函数的地址开始运行,该函数直邮一个无类型指针参数arg。如果需要向start_routine函数传递的 ...
分类:
其他好文 时间:
2017-03-19 17:35:44
阅读次数:
200
说明: 1)一个类中若有虚函数,(不论是自己的虚函数,还是继承而来的),那么类中就有一个成员变量:虚函数指针,这个指针指向一个虚函数表,虚函数表的第一项是类的typeinfo信息,之后的项为此类的所有虚函数的地址。 2)假设经过成员对齐后的类的大小为size个字节。那么类的sizeof大小可以这么计 ...
分类:
其他好文 时间:
2017-03-15 20:19:16
阅读次数:
161
指针引用分四种情况: 1.直接用基类指针引用基类对象 2.直接用派生指针引用派生对象 3.由基类指针引用派生类对象,由于派生类也是基类对象(包含关系),所以这种引用是安全的。但是只能引用基类成员,若试图通过基类指针引用那些只在派生类中才有的成员,编译器会报告语法错误。(解决该问题的答案是虚函数和多态 ...
分类:
其他好文 时间:
2017-03-09 23:06:04
阅读次数:
224
原文:http://blog.csdn.net/haoel/article/details/1948051 一、简介 C++中的虚函数的作用主要是实现了多态的机制。虚函数(Virtual Function)其实是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中 ...
分类:
编程语言 时间:
2017-03-09 13:15:03
阅读次数:
262
最近北京房价蹭蹭猛涨,买了房子的人心花怒放,没买的人心惊肉跳,咬牙切齿,楼主作为北漂无房一族,着实又亚历山大了一把,这些天晚上睡觉总是很难入睡,即使入睡,也是浮梦连篇,即使亚历山大,对C++的热情和追求还是不减,应该是感动了周公吧,梦境从此处开始,大师入场来给我安慰了。。。 11点躺在床上了,脑子里 ...
分类:
编程语言 时间:
2017-03-08 22:29:15
阅读次数:
223
实验了下面的函数: 输出: 16 为什么是16呢。因为我用的是64位机器呀。 64位机器的指针大小就是8呀。 然后因为对齐,所以整个长度16. 注意了:64位机器里面,int的size还是4. 关于虚函数虚表的内容,3月2号的文章有写。 ...
分类:
编程语言 时间:
2017-03-05 14:32:05
阅读次数:
220
派生类经常(但不总是)覆盖它继承的虚函数。如果派生类没有覆盖其基类中的某个虚函数,则该虚函数的行为类似于其他的普通成员,派生类会直接继承其在基类中的版本。 c++11允许派生类显式地注明它使用某个成员函数覆盖了它继承的虚函数。具体做法是在形参列表后面、或者在const成员函数的const关键字后面、 ...
分类:
编程语言 时间:
2017-03-05 14:20:25
阅读次数:
186