拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于:
-
通过使用另一个同类型的对象来初始化新创建的对象。
-
复制对象把它作为参数传递给函数。
-
复制对象,并从函数返回这个对象。
如果在类中没有定义拷贝构造函数,编译器会自行定义一个。如果类带有指针变量,并有动态内存分配,则它必须有一个拷贝构造函数。拷贝构造函数的最常见形式如下:
#include<iostream>
using namespace std;
class Line{
public:
int getlength();
Line(int len);//简单的构造函数
Line(const Line&obj);//拷贝构造函数
~Line();//析构函数
private:
int *ptr;
};
//成员函数的定义,包括构造函数
Line::Line(int len)
{
cout << "调用构造函数 "<<endl;
//为指针分配内存
ptr = new int;
*ptr = len;
}
Line::Line(const Line & obj)
{
cout << "调用构拷贝造函数并为指针 ptr 分配内存" <<endl;
ptr = new int;
*ptr = *obj.ptr;//拷贝值
}
Line::~Line(){
cout <<"释放内存 " << endl;
delete ptr;
}
int Line::getlength(){
return *ptr;
}
void display(Line obj)
{
cout << "Line 大小 :" << obj.getlength() << endl;
}
//程序的主函数
int main()
{
Line line(10);
display(line);
system("pause");
return 0;
}
运行结果为:
嗯,c中指针部分得复习,自己还没吃透,再吐槽一句,书上第一页说的没错,c++是目前编程语言中最难的语言。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/114814.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...