1.CTemp B=A;
这是调用复制构造函数还是赋值运算符啊?答案是调用的复制构造函数,这是为了和c语言保持一致。这是复制初始化
那什么时候用赋值操作符啊?
2.CTemp A,B;
B = A; //赋值运算符
两个对象都存在了(通过调用默认构造函数),这时候才调用赋值操作符
什么区别啊?
1式之前B不存在,2式之前B存在
这样啊,在去看看C++primer的复制控制去
赋值运算符(operator=)和复制构造函数:A(A& a){}都是用已存在A的对象来创建另一个对象B。不同之处在于:赋值运算符处理两个已有对象,即赋值前B应该是存在的;复制构造函数是生成一个全新的对象,即调用复制构造函数之前B不存在。
exp:
CTemp B(A); //复制构造函数,C++风格的初始化
CTemp B=A; //仍然是复制构造函数,不过这种风格只是为了与C兼容,与上面的效果一样
在这之前B不存在,或者说还未构造好。
CTemp B;
B = A; //赋值运算符
在这之前B已经通过默认构造函数构造完成。
转自http://hi.baidu.com/rk1105/item/f1f7c2c33463c9c0984aa0f1
相关推荐
这篇文章将对C++中复制构造函数和重载赋值操作符进行总结,包括以下内容: 1.复制构造函数和重载赋值操作符的定义; 2.复制构造函数和重载赋值操作符的调用时机; 3.复制构造函数和重载赋值操作符的实现要点; 4....
您可能感兴趣的文章:浅谈c++构造函数问题,初始化和赋值问题详解C++ 拷贝构造函数和赋值运算符详解C++中对构造函数和赋值运算符的复制和移动操作C++中复制构造函数和重载赋值操作符总结深入C++中构造函数、拷贝构造...
本篇文章是对C++中构造函数、拷贝构造函数、赋值操作符、析构函数的调用过程进行了总结与分析,需要的朋友参考下
在C++中复制控制是一个比较重要的话题,主要包括复制构造函数、重载赋值操作符、析构函数这三部分,这三个函数是一致的,如果需要手动定义了其中了一个,那么另外的两个也需要定义,通常在存在指针或者前期相关操作...
10.3.5 复制构造函数 310 第11章 分散编译和命名空间 318 11.1 分散编译 318 11.1.1 封装回顾 318 11.1.2 头文件和实现文件 319 11.1.3 使用#ifndef 326 11.2 命名空间 329 11.2.1 命名空间和using命令 329...
C++类用三个特殊的成员函数:复制构造函数、赋值操作符和析构函数 来决定类对象之间的初始化或赋值时发生什么。所谓的“复制控制”即通过这三个成员函数控制对象复制的过程。本篇文章将介绍复制构造函数。 复制...
10.13章 复制构造函数和赋值操作符 11.13章 析构函数 12.13章 深复制、浅复制 13.13章 管理指针成员 14.14章 重载操作符的定义 15.14章 重载输入输出操作符 16.14章 重载算术操作符 17.14章 重载关系...
在我们没有显式定义类的复制构造函数和赋值操作符的情况下,编译器会为我们生成默认的这两个函数: 默认的赋值函数以内存复制的形式完成对象的复制。 这种机制可以为我们节省很多编写复制构造函数和赋值...
C++操作符重载 实现效果图: 实例代码: Matrix.h #pragma once #include "vector" #include "iostream" #define rep(i,n) for(int i=1;...i++) //宏定义for循环,精简代码 ... //赋值操作符重载,必须为成员函数
这将不需要在派生类中显式的定义析构函数,复制构造函数,赋值操作符。如果在派生类中没有定义析构函数,编译器将定义一个不执行任何操作的默认构造函数,实际上,派生类的默认构造函数总要进行一些操作:执行...
15.4.5 构造函数和析构函数中的虚函数 497 15.5 继承情况下的类作用域 497 15.5.1 名字查找在编译时发生 498 15.5.2 名字冲突与继承 498 15.5.3 作用域与成员函数 499 15.5.4 虚函数与作用域 500 15.6 纯虚函数 502 ...
●赋值操作符,如果没有定义 ●地址操作符 class Stack { private: char *str; public: Stack(); //默认构造函数 ~Stack();//析构函数 Stack (const Stack &); //复制构造函数 Stack (char *str ) /...
string类中使用到了赋值构造函数、复制构造函数、构造函数、默认构造函数、析构函数、重载操作符等一些类操作 class String { public: String() { data = new char[1]; //这里为什么使用new char[1]呢,...
使用C++做的双链表模板类 具有头插法,尾插法,左向插入,右向插入,删除结点,获取结点值,设置结点值,复制构造函数,还重载了输出操作符、赋值操作符、相等操作符和不等操作符,还具有倒置链表的功能。...
派生类是否需要为显示定义析构函数,复制构造函数和赋值操作符呢? 不需要! 首先,来看是否需要析构函数,如果没有定义析构函数,编译器将定义一个不执行任何操作的默认构造函数。实际上,派生类的默认构造函数...
学习C++的基本例子。操作字符图片 ...学习到复制构造函数和赋值函数。 重载各种操作符,使用友元函数。 c方式的字符操作,内存操作。 该例子缺点会占用很多内存,不易扩展修改。后续升级版学习C++的高级知识
引:一道经常见到的面试题 ... // 复制构造函数 ~ String(void); // 析构函数 String & operate =(const String &other);// 重载赋值操作符 private: char *m_data; }; 请实现上述String的四个函数。
六、赋值操作符 七、自增自减操作符 八、字符串联结和重复操作符 九、逗号操作符 十、条件操作符 十一、操作符的次序 第四章 列表和数组变量 一、列表 二、数组--列表的存贮 1、数组的存取 2、字符串中的方...