主要是为了记录说明 :
class A;
A a;
A b = a; //这个是调用复制构造函数呢?还是先构造,再调用赋值操作符? 结果是前者。
测试代码:
#include
#include
class A {
public:
A() {
printf("%s\n", "A constructor");
}
A(cons...
分类:
编程语言 时间:
2014-05-15 11:17:40
阅读次数:
365
面向对象编程--构造函数和复制控制[续]三、复制控制和继承 合成操作对对象的基类部分连同派生类部分的成员一起进行复制、赋值或撤销,使用基类的复制构造函数、赋值操作符或析构函数对基类部分进行复制、赋值或撤销。 类是否需要定义复制控制成员完全取决于类自身的直接成员。基类可以定义自己的复制控制而派生类使用合成版本,反之,基类使用合成版本,而派生类使用自己定义的复制控制也可以。 只包含类类型或内置类型的数...
分类:
编程语言 时间:
2014-05-13 15:30:40
阅读次数:
388
stringstream本身的复制构造函数是私有的,无法直接用,于是带来了一些复杂的问题网上,流传着几种办法,如streamA.str(streamB.str()),但这种办法,复制的仅仅是初始化时的string会在以下这种情况下暴露出问题:
stringstream s1("123aaa")...
分类:
其他好文 时间:
2014-05-12 00:53:33
阅读次数:
266
地产中介卖的是房子,其使用的中介软件系统应该有个类用来描述卖掉的房子class
HomeFoeSale { ......}但是任何房子都是独一无二的,不应该存在两个房子拥有同样的属性,因此以下操作不应该正确!HomeForSale
h;HomeForSale h1(h); //调用复制构造...
分类:
编程语言 时间:
2014-05-10 01:15:46
阅读次数:
356
复制控制--析构函数引言: 在构造函数中分配了资源之后,需要一个对应操作自动回收或释放资源。析构函数就是这样的一个特殊函数,它可以完成所需的资源回收,作为类构造函数的补充。1、何时调用析构函数 撤销类对象时会自动调用析构函数: Sales_item *p = new Sales_item;
{
Sales_item item(*p); //调用复制构造...
分类:
编程语言 时间:
2014-05-03 21:09:42
阅读次数:
281
复制控制--复制构造函数、赋值操作符引言: 当定义一个新类型时,需要显式或隐式地指定复制、赋值和撤销该类型的对象时会发生什么– 复制构造函数、赋值操作符和析构函数的作用! 复制构造函数:具有单个形参,该形参(常用const修饰)是对该类类型的引用。当定义一个新对象并用一个同类型的对象对它进行初始化时,将显式的使用复制构造函数;当将该类型的对象传递给函数或者从函数返回该类型的对象时,将隐...
分类:
编程语言 时间:
2014-05-02 07:48:27
阅读次数:
385
在C++中,explicit关键字主要用于防止隐式转换,用于修饰构造函数、复制构造函数。例如有一个类:class A { public: A( int
count ) : m_data( count ){} private: int m_data; };int main() { ...
分类:
其他好文 时间:
2014-05-01 03:03:36
阅读次数:
311
构造函数不能是虚函数。但有时候确实需要能传递一个指向基类对象的指针,并且有已创建的派生类对象的拷贝。通常在类内部创建一个Clone()方法,并设置为虚函数。//Listing
12.11 Virtual copy constructor#include using namespace std;cla...
分类:
编程语言 时间:
2014-04-29 17:26:52
阅读次数:
522