前言
我希望我的文章能帮到看本篇blog的小可爱,可以提提自己的建议,一起讨论一起学习,毕竟第一次写这些,文章还欠缺许多东西。嘻嘻,Cony君先拜谢各位小小可爱啦
知识点
拷贝构造函数
我今天在补充一点关于构造函数的知识。我的失误。幸好,查资料的时候,我看到了。今天先讲拷贝构造函数。拷贝构造函数是特殊的构造函数。
拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于:
1. 通过使用另一个同类型的对象来初始化新创建的对象。
2. 复制对象把它作为参数传递给函数。
3. 复制对象,并从函数返回这个对象。
拷贝构造函数都有其特殊形象。我们想想大神,他们在某个方面就比较特殊。我所喜爱的罗翔老师,讲课有趣,但是受伤的总是张三,因为张三是 “法外狂徒” 。这点还不是特殊,特殊的是罗老师的头感觉要绝顶了,这或许就是大佬该有的样子。这是何其特殊。那么拷贝构造函数特殊点,就是会传参数,并且参数有修饰限定词 const 。格式如下
classname (const classname &n ) { //引用
//构造函数主体
}
来个例子,代码如下
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N=1e4+10;
class Mode{
public:
Mode(int len);
Mode(const Mode &ob);
void get();
~Mode();
private:
int *Ptr;
};
Mode::Mode(const Mode &ob){
cout << "调用拷贝构造函数并为指针 Ptr 分配内存" << endl;
Ptr = new int;//内存分配
*Ptr = *ob.Ptr; // 拷贝值
}
Mode::Mode(int len){
cout<<"普通的构造函数"<<endl;
Ptr=new int;
*Ptr=len;
}
void Mode::get(){
cout<<*Ptr<<endl;
}
Mode::~Mode(){
delete Ptr;
}
int main (){
Mode mode(10);//普通构造
mode.get();
Mode mode1=mode;//拷贝构造函数的使用
mode1.get();
return 0;
}
总结
各位小可爱,来个关注吧。