`
iamicebergs
  • 浏览: 25861 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

C++中复制构造函数和赋值函数的区别

阅读更多
这篇博客参考了:http://soft-app.iteye.com/blog/922040

上面的博客讲的比较详细,解释了复制构造函数和赋值函数的区别,在这里通过相关代码解释复制构造函数和赋值函数的区别,还有需要注意初始化时的隐式类型转换。

#include <iostream>
using namespace std;

class test
{

public:
	test()								// 1. 默认构造函数。
	{
		cout << "default consturctor" << endl;		
	}

	test(int i)							// 2. 带参数的构造函数。
 	{	
 		a = i;
		cout <<"test(int i)" << endl;		
 	}

	test(const test & other)			// 3. 复制构造函数。
	{
		a = other.a;
		cout << "copy constructor" << endl;
	}

	test& operator=(const test& other)	// 4. 赋值函数。
	{
		a = other.a;
		cout << "assignment" << endl;
		return *this;
	}

private:
	int a;

};

int main(int argc, char* argv[])
{
	// 1.测试一
 	test t1;				// 调用t1的默认构造函数;
 	test t2 = t1;			// 调用t2的复制构造函数,因为在这里t2属于实例化时期,所以不是赋值函数
	t2 = t1;				// 调用t2的赋值函数,因为这里t2实例化过程已经完成,所以调用的是赋值函数。

	test t3(t1);			// 调用t3的复制构造函数,这里t3属于实例化时期。
 	test t4 = t3 = t2;		// 调用t3的赋值函数,调用t4的复制函数。

	// 2.测试二
 	test a = 20;			// 调用带int参数的构造函数,这里存在内置数据类型向类类型的隐式转换。
 	test b = a;				// 调用b的复制构造函数。

	return 0;
}
分享到:
评论

相关推荐

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

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

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

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

    详解C++中对构造函数和赋值运算符的复制和移动操作

    复制构造函数和复制赋值运算符 从 C++ 11 中开始,该语言支持两种类型的分配:复制赋值和移动赋值。 在本文中,“赋值”意味着复制赋值,除非有其他显式声明。 赋值操作和初始化操作都会导致对象被复制。 赋值:在将...

    详谈C++何时需要定义赋值/复制构造函数

    假设基类使用了动态内存分配,而且定义了析构函数、复制构造函数和赋值函数,但是在派生类中没有使用动态内存分配,那么在派生类中不需要显示定义析构函数、复制构造函数和赋值函数。 当基类和派生类采用动态内存...

    详解在C++中显式默认设置的函数和已删除的函数的方法

    在 C++ 中,如果某个类型未声明它本身,则编译器将自动为该类型生成默认构造函数、复制构造函数、复制赋值运算符和析构函数。这些函数称为特殊成员函数,它们使 C++ 中的简单用户定义类型的行为如同 C 中的结构。也...

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

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

    关于复制构造函数的使用(C++)

    关于构造函数的问题,本文是关于构造函数的专题,集中介绍了默认构造函数,初始化列表,重点介绍了复制构造函数, 直接初始化,复制初始化,赋值,临时对象之间的关系,本文内容全面,简单易懂。 本文内容完全属于...

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

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

    C++复制(拷贝)构造函数实验代码

    C++复制(拷贝) 构造函数实验代码 每个类只有一个析构函数 和一个赋值函数 ,但可以有多个构造函数 (包含一个拷贝构造函数 ,其它的称为普通构造函数 )。对于任意一个类 A ,如果不想编写上述函数, C++ 编译器将...

    C++复制控制之复制构造函数

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

    C++ 构造函数中使用new时注意事项

    使用new初始化对象中的指针成员时遇到的问题 在构造函数中使用new初始化指针成员,那么析构函数中就必须使delete,并且...需要自行定义一个复制构造函数和赋值构造函数,用深复制的方式把一个对象初始化给另一个对象,

    C++中拷贝构造函数的总结详解

    (其实很多名字,只要静下心来想一想,就真的是顾名思义呀)拷贝又称复制,因此拷贝构造函数又称复制构造函数。百度百科上是这样说的:拷贝构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的...

    C++中对象的赋值与复制操作详细解析

    实际上这个过程是通过成员复制来实现的,即将一个对象的成员值一一复制给另外一个对象的成员。对象赋值的一般形式: 对象名1=对象名2; 注意,对象1和对象2必须是属于同一个类 =========示例代码1.1=============== ...

    C++ 构造函数初始化列表的好处

    C++ 类对像构造时,需要对类成员变量完成初始化赋值操作。使用初始化列表完成这步操作在性能上有益处。什么好处呢?摆道理显得不够彻底。看书不如做实验。...  这里需要陈述一下“复制构造函数”和

    C++实现的string 类

    构造函数至少应有三个:无参构造函数、C风格字符串构造函数和复制构造函数 2、为string类提供必要的成员函数,可以参考C++类库的string类提供了那些成员函数,至少应包括下标访问,子串查找、获得C风格字符串、获得...

    设计string类

    构造函数至少应有三个:无参构造函数、C风格字符串构造函数和复制构造函数 2、为string类提供必要的成员函数,可以参考C++类库的string类提供了那些成员函数,至少应包括下标访问,子串查找、获得C风格字符串、获得...

    c++作业设计string类

    构造函数至少应有三个:无参构造函数、C风格字符串构造函数和复制构造函数 2、为string类提供必要的成员函数,可以参考C++类库的string类提供了那些成员函数,至少应包括下标访问,子串查找、获得C风格字符串、获得...

Global site tag (gtag.js) - Google Analytics