至于这两种函数的用途,用于引用计数时比较有用吧,完成一些在堆上分配的数据的传递工作。
http://xinklabi.iteye.com/blog/653457
啥也不说了,直接上代码;注释很详细了
#include <iostream>
using namespace std;
class Class{
public:
Class(){
}
//如果用 explicit Class(const Class& c){ 来声明,则不能用Class c1=c;而只可以Class c2(c);
Class(const Class& c){
cout<<"copy construnctor called\n";
}
//=的调用者本身就是个Class类!该函数只是为了自行完成一些数据传递的任务,最后返回该调用者的引用即可
Class& operator=(const Class& c){
cout<<"= operator called\n";
return *this;
}
//函数返回时调用拷贝构造函数
static Class getClass(){
cout<<"begin getClass\n";
Class c;
cout<<"end of getClass,soon to return\n";
return c;
}
};
//类作为参数,进入函数时会调用拷贝构造函数
void classAsParam(Class c){
cout<<"begin classAsParam\n";
}
//类的引用作为参数,进入函数时不会调用拷贝构造函数
void classReferenceAsParam(Class& c){
cout<<"begin classReferenceAsParam\n";
}
void main(){
Class c;
Class c1=c;//因为是初始化,调用的是拷贝构造函数,而非=运算符
Class c2(c);//同上
cout<<"\n//////////// Test getClass without return value\n";
Class::getClass();//函数返回时调用拷贝构造函数
cout<<"\n//////////// Test getClass with new left value\n";
Class c3=Class::getClass();//函数返回时调用拷贝构造函数;由于c3在此声明,因而再调用拷贝构造函数(貌似被编译器省略了)
cout<<"\n//////////// Test getClass with exist left value\n";
c2=Class::getClass();//函数返回时调用拷贝构造函数;由于c2已经声明过,因而再调用=运算符将临时变量赋值给c2
cout<<"\n//////////// Test classAsParam\n";
classAsParam(c);//类作为参数,进入函数时会调用拷贝构造函数
cout<<"\n//////////// Test classReferenceAsParam\n";
classReferenceAsParam(c);//类的引用作为参数,进入函数时不会调用拷贝构造函数
}
分享到:
相关推荐
C++ 拷贝构造函数 赋值构造函数 解释
本文主要介绍了拷贝构造函数和赋值运算符的区别,以及在什么时候调用拷贝构造函数、什么情况下调用赋值运算符。最后,简单的分析了下深拷贝和浅拷贝的问题。有需要的朋友可以看下
C++拷贝构造函数和赋值操作 拷贝构造函数对同一个对象来说只会调用一次,而且是在对象构造时调用。此时对象本身还没有构造,无需要去释放自己的一些资源。而赋值操作可能会调用多次,你在拷贝之前要释放自己的一些...
1. 设计一个类SavingsAccount,定义一个静态数据成员记录存款的年利率(rate) 2. 参考附件资料《拷贝构造函数的调用》,创建一个包含double*的类 3. 建立类RationalNumber(分数类),使其具有如下的功能:
C++中一般创建对象,拷贝或赋值的方式有构造函数,拷贝构造函数,赋值函数这三种方法。下面就详细比较下三者之间的区别以及它们的具体实现 1.构造函数 构造函数是一种特殊的类成员函数,是当创建一个类的对象时,它...
C++拷贝构造与运算符C++拷贝构造与运算符C++拷贝构造与运算符C++拷贝构造与运算符
C++简单类的实现,包括构造函数,析构函数以及拷贝构造函数
初始化和赋值问题详解C++ 拷贝构造函数和赋值运算符详解C++中对构造函数和赋值运算符的复制和移动操作C++中复制构造函数和重载赋值操作符总结深入C++中构造函数、拷贝构造函数、赋值操作符、析构函数的调用过程总结...
C++类对象的拷贝构造函数 C++类对象的拷贝构造函数 C++类对象的拷贝构造函数 C++类对象的拷贝构造函数 C++类对象的拷贝构造函数 C++类对象的拷贝构造函数
拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于: 通过使用另一个同类型的对象来初始化新创建的对象。 复制对象把它作为参数传递给...
初学者入门实例,看懂后,初学者能够对拷贝构造函数有一个清楚的了解,这是我自己的经验哈
C++规定与类同名的函数就是拷贝构造函数 默认拷贝构造函数 在类定义中如果没有提供自己的拷贝构造函数,则C++提供一个默认的构造函数,其拷贝策略是逐个成员依次拷贝。 深拷贝和浅拷贝 默认拷贝构造函数均是浅拷贝 ...
主要介绍了C++中对构造函数和赋值运算符的复制和移动,是C++入门学习中的基础知识,需要的朋友可以参考下
详解C++ 编写String 的构造函数、拷贝构造函数、析构函数和赋值函数 编写类String 的构造函数、析构函数和赋值函数,已知类String 的原型为: class String { public: String(const char *str = NULL); // 普通...
C++实现 类string的 普通构造函数, 拷贝构造函数 析构函数 和赋值函数
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...
c++之十引用和拷贝构造函数c++之十引用和拷贝构造函数c++之十引用和拷贝构造函数c++之十引用和拷贝构造函数
1.什么是拷贝构造函数: 拷贝构造函数嘛,当然就是拷贝和构造了。(其实很多名字,只要静下心来想一想,就真的是顾名思义呀)拷贝又称复制,因此拷贝构造函数又称复制构造函数。百度百科上是这样说的:拷贝构造函数...
1、本文详细描述了C++语言拷贝构造函数的用法。 2、通过详细示例,让读者更直观地阅读,更清晰的理解。 3、示例代码可直接复制,编译后可直接运行。 4、根据示例以及运行结果,让读者加强记忆及理解。