`
iamicebergs
  • 浏览: 26755 次
  • 性别: 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++的特殊成员函数,这些函数对对象生命周期的管理起着关键作用。熟练掌握这些函数的使用,能够帮助开发者编写出更加安全、可维护的代码。

    没有可用的复制构造函数或复制构造函数声明

    在C++编程中,"没有可用的复制构造函数或复制构造函数声明"是一个常见的错误,通常出现在尝试复制一个对象,而该对象的类没有定义复制构造函数时。在这个特定的情境中,问题出在一个名为`CArray, int&gt;`的自定义数组...

    构造函数和复制构造函数

    构造函数和复制构造函数的详细介绍 构造函数是C++中的一种特殊函数,它们...构造函数、复制构造函数和拷贝构造函数是C++中三个基本的函数,它们之间有着紧密的联系,并且在对象的初始化和复制操作中扮演着重要的角色。

    C++拷贝构造函数和赋值操作

    在C++编程中,拷贝构造函数与赋值操作是实现类的拷贝管理的关键机制。它们主要用于处理类的对象之间的拷贝和复制过程,尤其是在处理含有动态分配内存的类时尤为重要。 #### 拷贝构造函数 拷贝构造函数是一种特殊的...

    详解C++ 拷贝构造函数和赋值运算符

    在C++编程中,拷贝构造函数和赋值运算符是两种重要的成员函数,它们用于处理对象间的值复制。这篇文章将深入探讨这两种机制的区别、调用条件以及深拷贝和浅拷贝的概念。 拷贝构造函数是一种特殊的构造函数,它接受...

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

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

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

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

    详解C++中构造函数,拷贝构造函数和赋值函数的区别和实现

    C++中的构造函数、拷贝构造函数和赋值函数都是类的成员函数,但它们之间存在着明显的区别和实现方法。 1. 构造函数 构造函数是一种特殊的类成员函数,当创建一个类的对象时,它被调用来对类的数据成员进行初始化和...

    c++中拷贝构造函数实例

    在C++编程语言中,拷贝构造函数是一个特殊类型的构造函数,它的主要...总的来说,理解和掌握C++中的拷贝构造函数是编写安全、高效代码的基础。通过实例练习,初学者可以更好地理解其工作原理,并在实际编程中灵活运用。

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

    总结来说,复制构造函数和重载赋值操作符在C++中扮演着至关重要的角色,它们确保了对象复制和赋值的正确性和效率,尤其是在涉及动态内存分配和多态性时。对于包含复杂数据结构或需要管理资源的类,程序员必须理解和...

    拷贝构造函数和赋值运算符的区别 (2).docx

    在C++编程中,拷贝构造函数和赋值运算符是两个至关重要的概念,它们都是处理对象间的复制行为,但有着明显的区别和各自的应用场景。 **拷贝构造函数** 拷贝构造函数是一种特殊的构造函数,它的主要任务是在创建新...

    C++构造函数_析构函数和赋值操作符学习小结

    C++ 构造函数、析构函数和赋值操作符是 C++ 编程语言中的基本组件,它们提供了对象的初始化、销毁和赋值操作。这些函数的正确性对整个类的正确性至关重要。 构造函数 构造函数是类的特殊成员函数,它们控制对象...

    拷贝构造函数和赋值运算符的区别.docx

    在C++编程中,拷贝构造函数和赋值运算符是两个至关重要的概念,它们都是用于处理对象间的复制行为,但有着本质的区别。 **拷贝构造函数** 拷贝构造函数是一种特殊的构造函数,它在创建新对象时,使用已经存在的...

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

    总的来说,理解C++中的复制构造函数和赋值运算符是深入学习C++的关键步骤。复制操作保证了对象的副本具有相同的数据,而移动操作则提供了更高效的资源转移机制。这两个概念在编写高效、安全的C++代码中起着至关重要...

    C++实现 类string的 普通构造函数, 拷贝构造函数 析构函数 和赋值函数

    在自定义类设计中,通常需要实现四个特殊成员函数:普通构造函数、拷贝构造函数、析构函数和赋值运算符。这些函数是面向对象编程中的核心组成部分,对于理解和创建高效、安全的对象至关重要。 **普通构造函数**: ...

    复制构造函数

    本文将深入探讨复制构造函数的原理,以及深度复制和浅复制的区别,旨在帮助程序员更好地理解和运用这一概念。 #### 1. 默认拷贝构造函数 默认情况下,C++编译器会自动生成一个默认的拷贝构造函数。这个默认的拷贝...

    c++构造函数小测验

    Sprite类还包含了一个复制构造函数和一个赋值运算符重载,这在C++中用于支持复制语义,确保对象复制的正确性。赋值运算符重载在复制对象时被调用,用于处理对象之间的赋值操作,其目的是避免浅拷贝带来的问题,确保...

Global site tag (gtag.js) - Google Analytics