摘要:
1、虚拟函数调用只需要“部分的”信息,即只需要知道函数接口,而不需要对象的具体类型。但是构建一个对象,却必须知道具体的类型信息。如果你调用一个虚拟构造函数,编译器怎么知道你想构建是继承树上的哪种类型呢?所以这在逻辑上是一个悖论。 2、除了虚表,还有虚表指针vptr,类实例需要靠他指向虚表,构造的时候 阅读全文
摘要:
1、两个的区别(1)在未定义显示拷贝构造函数的情况下,系统会调用默认的拷贝函数——即浅拷贝,它能够完成成员的一一复制。当数据成员中没有指针时,浅拷贝是可行的; 但当数据成员中有指针时,如果采用简单的浅拷贝,则两类中的两个指针将指向同一个地址,当对象快结束时,会调用两次析构函数,而导致指针悬挂现象,所 阅读全文
摘要:
构造函数 ,是一种特殊的方法 。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。 1、最基本的构造函数 2、拷贝构造函数 为什么拷贝构造函数 阅读全文
摘要:
1、被调用的3个时机: (1)直接初始化或拷贝初始化; (2)将一个对象作为一个实参传递,形参采用非指针或非引用的对象进行接收时(指针即指向了同一块空间,并未实现拷贝;而引用就是实参本身); (3)函数的返回值是以值传递的形式返回。 2、举例说明: 输出结果: 阅读全文
摘要:
1、C++模板 说到C++模板特化与偏特化,就不得不简要的先说说C++中的模板。我们都知道,强类型的程序设计迫使我们为逻辑结构相同而具体数据类型不同的对象编写模式一致的代码,而无法抽取其中的共性,这样显然不利于程序的扩充和维护。C++模板就应运而生。C++的模板提供了对逻辑结构相同的数据对象通用行为 阅读全文
摘要:
1.首先看一个例子: 情形1输出: 情形2输出: 第二种情况输出对应Test2的初始化列表,直接调用拷贝构造函数初始化test1,省去了调用默认构造函数的过程。所以一个好的原则是,能使用初始化列表的时候尽量使用初始化列表。提高了性能。 2. 除了性能问题之外,有些时场合初始化列表是不可或缺的,以下几 阅读全文
摘要:
转自:http://blog.chinaunix.net/uid-28541347-id-4251713.html 从RTTI谈C++的向下转型 1.什么是RTTI? RTTI 是“Runtime Type Information”的缩写,意思是:运行时类型信息。它提供了运行时确定对象类型的方法。允 阅读全文
摘要:
将类型名作为强制类型转换运算符的做法是C语言的老式做法,C++语言为保持兼容而予以保留。C++ 引入了四种功能不同的强制类型转换运算符以进行强制类型转换:static_cast、reinterpret_cast、const_cast 和 dynamic_cast。强制类型转换是有一定风险的,有的转换 阅读全文