`

赋值操作符和复制构造函数

 
阅读更多

 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++中复制构造函数和重载赋值操作符总结

    这篇文章将对C++中复制构造函数和重载赋值操作符进行总结,包括以下内容: 1.复制构造函数和重载赋值操作符的定义; 2.复制构造函数和重载赋值操作符的调用时机; 3.复制构造函数和重载赋值操作符的实现要点; 4....

    C++ 赋值构造函数注意点介绍

    您可能感兴趣的文章:浅谈c++构造函数问题,初始化和赋值问题详解C++ 拷贝构造函数和赋值运算符详解C++中对构造函数和赋值运算符的复制和移动操作C++中复制构造函数和重载赋值操作符总结深入C++中构造函数、拷贝构造...

    深入C++中构造函数、拷贝构造函数、赋值操作符、析构函数的调用过程总结

    本篇文章是对C++中构造函数、拷贝构造函数、赋值操作符、析构函数的调用过程进行了总结与分析,需要的朋友参考下

    C++中复制构造函数与重载赋值操作符的深入分析

    在C++中复制控制是一个比较重要的话题,主要包括复制构造函数、重载赋值操作符、析构函数这三部分,这三个函数是一致的,如果需要手动定义了其中了一个,那么另外的两个也需要定义,通常在存在指针或者前期相关操作...

    Absolute C++中文版(原书第2版)-完美的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++复制控制之复制构造函数

    C++类用三个特殊的成员函数:复制构造函数、赋值操作符和析构函数 来决定类对象之间的初始化或赋值时发生什么。所谓的“复制控制”即通过这三个成员函数控制对象复制的过程。本篇文章将介绍复制构造函数。  复制...

    C++Primer视频(高级)下载地址

    10.13章 复制构造函数和赋值操作符 11.13章 析构函数 12.13章 深复制、浅复制 13.13章 管理指针成员 14.14章 重载操作符的定义 15.14章 重载输入输出操作符 16.14章 重载算术操作符 17.14章 重载关系...

    C++11中对类(class)新增的特性

     在我们没有显式定义类的复制构造函数和赋值操作符的情况下,编译器会为我们生成默认的这两个函数:  默认的赋值函数以内存复制的形式完成对象的复制。  这种机制可以为我们节省很多编写复制构造函数和赋值...

    C++ 开发之实现操作符重载的实例

    C++操作符重载 实现效果图: 实例代码: Matrix.h #pragma once #include "vector" #include "iostream" #define rep(i,n) for(int i=1;...i++) //宏定义for循环,精简代码 ... //赋值操作符重载,必须为成员函数

    C++之继承和动态内存分配

     这将不需要在派生类中显式的定义析构函数,复制构造函数,赋值操作符。如果在派生类中没有定义析构函数,编译器将定义一个不执行任何操作的默认构造函数,实际上,派生类的默认构造函数总要进行一些操作:执行...

    C++ Primer第四版【中文高清扫描版】.pdf

    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 ...

    C++编译器帮我们做了些什么

     ●赋值操作符,如果没有定义  ●地址操作符 class Stack { private: char *str; public: Stack(); //默认构造函数 ~Stack();//析构函数 Stack (const Stack &); //复制构造函数 Stack (char *str ) /...

    一个string类的简单实现案例

    string类中使用到了赋值构造函数、复制构造函数、构造函数、默认构造函数、析构函数、重载操作符等一些类操作 class String { public: String() { data = new char[1]; //这里为什么使用new char[1]呢,...

    C++模板类——双链表

    使用C++做的双链表模板类 具有头插法,尾插法,左向插入,右向插入,删除结点,获取结点值,设置结点值,复制构造函数,还重载了输出操作符、赋值操作符、相等操作符和不等操作符,还具有倒置链表的功能。...

    C++ 中继承与动态内存分配的详解

    派生类是否需要为显示定义析构函数,复制构造函数和赋值操作符呢? 不需要! 首先,来看是否需要析构函数,如果没有定义析构函数,编译器将定义一个不执行任何操作的默认构造函数。实际上,派生类的默认构造函数...

    c++学习例子 picture图片

    学习C++的基本例子。操作字符图片 ...学习到复制构造函数和赋值函数。 重载各种操作符,使用友元函数。 c方式的字符操作,内存操作。 该例子缺点会占用很多内存,不易扩展修改。后续升级版学习C++的高级知识

    C++基础知识??类的复制控制

    引:一道经常见到的面试题 ... // 复制构造函数  ~ String(void); // 析构函数  String & operate =(const String &other);// 重载赋值操作符 private:  char *m_data; };  请实现上述String的四个函数。

    Perl5语言全教程

    六、赋值操作符 七、自增自减操作符 八、字符串联结和重复操作符 九、逗号操作符 十、条件操作符 十一、操作符的次序 第四章 列表和数组变量 一、列表 二、数组--列表的存贮 1、数组的存取 2、字符串中的方...

Global site tag (gtag.js) - Google Analytics