C++对象的复制操作
发布日期:2021-07-01 04:36:26 浏览次数:2 分类:技术文章

本文共 1411 字,大约阅读时间需要 4 分钟。

对象的复制操作

       定义一个C++类对象的时候,就是调用类的构造函数,创建一个对象。假设有如下的student类:

class student{

public: //定义成员变量

    char name[32]; //姓名

    char addr[32]; //家庭地址

    long long number; //电话号码

public: //以下部分是公有部分

    student(char* pn, char* pa, long long n)

    {

        strcpy(name, pn);

        strcpy(addr, pa);

        number = n;

    }

    void print() const

    {

        cout << "name = " << name << endl;

        cout << "addr = " << addr << endl;

        cout << "number = " << number << endl;

    }

};

       那么,可以定义一个对象,如下:

student stud("wkf", "www.mylinux.vip", 13926572996);

       此时,定义了stud对象。那么,能否使用stud对象来创建一个新的类对象?例如:

student stud1(stud);

       就是使用stud对象来创建stud1对象。这种方法是允许的,这就是我们本节介绍的:对象复制。

C++提供了这样的克隆机制,就是“对象的复制机制”。用一个已有的对象快速地复制出多个完全相同的对象,其一般格式为:

类名  对象2(对象1);

就是在定义对象2的时候,用对象1复制出对象2。

       要实现这个操作,我们需要给C++类定义一个特殊的构造函数,称为:拷贝构造函数(copy constructor),这个函数的形式如下:

构造函数名(需要拷贝对象的引用)

       假设有一个student类,那么,定义其拷贝构造函数如下:

student(const student& s)

       此时,定义一个student类的拷贝构造函数,拷贝构造函数的参数是需要拷贝对象的引用。那么,为了保护引用对象的数据,我们一般声明为const类型的引用。

       拷贝构造函数也是构造函数,但是,它只有一个参数,这个参数是本类的对象(不能是其他类的对象),而且,参数对象的引用形式(一般约定加 const 声明,使参数值不能改变,以免在调用此函数时因不慎而使对象值被修改),此拷贝构造函数的作用就是将实参对象的各个成员变量的值一一赋给新的对象中对应的成员变量。

       注意:定义一个C++类的时候,如果用户没有自己定义拷贝构造函数,那么,编译系统为C++提供了一个默认的拷贝构造函数,这个默认的拷贝构造函数很简单,如同默认的赋值运算一样,只是把对象之间的成员变量进行一一对应赋值。如下是一个程序测试例子:

程序运行结果如下:

       可以看的,我们定义了一个stud对象,然后,执行:

student stud1(stud);

       此时,定义一个stud1对象,就是使用stud对象来复制,复制得到stud1对象。在上面的例子中,我们没有定义拷贝构造函数,那么,就使用系统默认提供的拷贝构造函数,实现对象成员的一一对应赋值。

韦凯峰 Linux C/C++ 程序设计教程,Linux 系统编程,Openwrt 系统开发,微信:13926572996,QQ:1523520001,博客:www.mylinux.vip

 

 

 

 

 

 

 

 

 

 

 

转载地址:https://mylinux.blog.csdn.net/article/details/117984167 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C++自定义拷贝构造函数
下一篇:C++重载赋值运算符

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月28日 20时02分24秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章