当前位置:  编程技术>sql数据库中复制表结构与复制表数据 iis7站长之家

C++中复制构造函数和重载赋值操作符总结

    来源: 互联网  发布时间:2014-10-29

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

前言

这篇文章将对C++中复制构造函数和重载赋值操作符进行总结,包括以下内容:

1.复制构造函数和重载赋值操作符的定义;
2.复制构造函数和重载赋值操作符的调用时机;
3.复制构造函数和重载赋值操作符的实现要点;
4.复制构造函数的一些细节。

复制构造函数和重载赋值操作符的定义

我们都知道,在C++中建立一个类,这个类中肯定会包括构造函数、析构函数、复制构造函数和重载赋值操作;即使在你没有明确定义的情况下,编译器也会给你生成这样的四个函数。例如以下类:

代码如下:

class CTest
{
public:
     CTest();
     ~CTest();
 
     CTest(const CTest &);
     void operator=(const CTest &);
};

对于构造函数和析构函数不是今天总结的重点,今天的重点是复制构造函数和重载赋值操作。类的复制构造函数原型如下:
代码如下:

class_name(const class_name &src);

一般来说,如果我们没有编写复制构造函数,那么编译器会自动地替每一个类创建一个复制构造函数(也叫隐式复制构造函数);相反的,如果我们编写了一个复制构造函数(显式的复制构造函数),那么编译器就不会创建它。

类的重载赋值操作符的原型如下:

代码如下:

void operator=(const class_name &);

重载赋值操作符是一个特别的赋值运算符,通常是用来把已存在的对象指定给其它相同类型的对象。它是一个特别的成员函数,如果我们没有定义这个成员函数,那么编译器会自动地产生这个成员函数。编译器产生的代码是以单一成员进行对象复制的动作。

总结了复制构造函数和重载赋值操作符的定义,只是让我们了解了它们,而没有真正的深入它们。接下来,再仔细的总结一下它们的调用时机。关于它们的调用时机,我一直都没有真正的明白过,所以这里一定要好好的总结明白了。

复制构造函数和重载赋值操作符的调用时机

对复制构造函数和重载赋值操作符的调用总是发生在不经意间,它们不是经过我们显式的去调用就被执行了。对于这种隐式调用的地方一定要多注意了,这也一般是有陷阱的地方。现在我就用实际的例子来进行验证;例子如下:

代码如下:

#include
using namespace std;
 
class CTest
{
public:
     CTest(){}
     ~CTest(){}
 
     CTest(const CTest &test)
     {
          cout

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • photoshop教程 快捷键命令大全表免费下载 快捷键如何设置 复制 放大等
  • 请问linux复制文件到u盘是复制到硬盘缓存再复制去u盘的吗?
  • 比较难的目录复制,如何原样复制链接符号文件和设备文件?
  • 在Linux中复制文件如何自动跳过那些损坏的无法被复制的文件。
  • 请问UNIX下如何复制目录结构而不复制其中的文件
  • 关于剪贴板(对象的复制、粘贴,而非String的复制、粘贴)
  • oracle复制表结构和复制表数据语句分享
  • pdf格式文件,复制内容时,英文部分可以正常复制,中文部分却不可以,谁能解决一下
  • cp复制文件时用-a怎么复制过来的文件属性跟原来的还不一样呢?
  • sqlserver 复制表 复制数据库存储过程的方法
  • sql数据库中复制表结构与复制表数据
  • 有关vi的鼠标复制功能
  • 文件复制软件 Copy Handler
  • VI搜索时怎样将复制的内容作为搜索的内容??
  • 链接文件的复制问题,重问
  • 数据库复制引擎 Tungsten Replicator
  • Unix 命令行数据复制程序 ddpt
  • vim打开的文件怎么复制里面的内容啊
  • 急。。。我下载了一个库。如何把头文件复制到系统目录中?
  • 数据同步和复制解决方案 SymmetricDS
  • 主进程有两个线程,fork子进程后复制主进程两个线程的内存么?




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3