
C++
文章平均质量分 57
shang_ry
这个作者很懒,什么都没留下…
展开
-
多继承,虚继承,虚函数下的内存布局
多继承是指一个派生类继承多个基类;多继承想要节省空间就需要用到虚继承,因此多继承或者说虚继承的一个弊端也显而易见,在菱形继承之下,B 继承A,C 继承A,D多继承B 和C,这样需要声明D 虚继承B和C ,还要在D的构造中指明A的构造方式。这样一来,D在看不到A的情况下,仍然需要指明A的继承方式。虚继承是指为了节省空间而将相同的数据区域使用虚基类指针而代替的一种继承方式(在C++中而言),虚基类...原创 2019-03-25 21:22:03 · 484 阅读 · 0 评论 -
剑指offer之赋值运算符函数和单例模式
一,题目:如下为类型为CMyString的声明,请为该类型添加赋值运算符函数class CMyString{public: CMyString(char* pData = NULL); CMyString(const CmyString& str); ~CMyString(void);private: char * m_pData;} ...原创 2019-03-22 23:57:50 · 211 阅读 · 0 评论 -
关于虚函数和虚继承
基类中无虚函数,派生类中有虚函数,基类的指针指向派生类对象(指向的是派生类中基类的起始部分),delete 时只析构基类的对象而不析构派生类的对象。基类指针指向派生类的的情况下,基类的虚构要设为虚析构。虚表合并时向内层合并,虚表合并时会先拷贝一份副本,然后合并的时候使用副本合并。虚函数表的生成在编译器间,对象的生成在运行期间。对象的虚函数指针在构造之前就指向虚表了。即虚表的写入时机是...原创 2019-03-22 00:31:17 · 304 阅读 · 0 评论 -
C++中的虚函数
类和类的关系有以下三种:1组合关系 has_a a part of(需要注意的是私有继承属于组合关系) 2继承关系is_a a kind of 3代理关系(多用于容器适配器)同名函数之间有如下关系:函数重载:同名同作用域不同参 隐藏:派生类隐藏了基类中的所有同名函数(存在,看不见) 覆盖:派生类中同名同参的虚函数会覆盖基类中同名同参的虚函数(发生在虚表的合并阶段)...原创 2019-03-20 00:01:43 · 158 阅读 · 0 评论 -
继承的特性
C++中的三个特性是继承封装和多态。其中继承的主要用途在于代码的复用。首先如何继承一个类呢?我们只需要在我们实现的类后面加上继承方法再加上要继承的类名就可以了,此时被继承的类我们叫它基类或者父类,继承的类叫做派生类或者子类。继承分为单继承和多继承,单继承的话表明只继承一个类作为父类,也可以继承多个类,父类之间以“,”隔开就可以了。那么派生类继承了基类的什么呢?答案是派生类继承了除基类的构造...原创 2019-03-18 00:02:58 · 1350 阅读 · 0 评论 -
String类的写时拷贝
假设我们现在有这样一个类,当我们只是为了查询时,实现拷贝构造函数时就可以实现浅拷贝;仅当我们要对生成的对象进行修改时,才进行深拷贝,这样可以很节省空间,也能提高效率。可是如果这样的话,多个浅拷贝,析构时就会导致程序崩溃。因此我们可以自己实现一个析构函数,引入引用计数,当有新的对象生成时,引用计数置为零;之后每拷贝构造产生一个新的对象时,我们使用浅拷贝,引用计数加一;析构函数首先引用计数减一,然后...原创 2018-11-27 15:59:18 · 425 阅读 · 0 评论