博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
复制构造函数与禁止复制即函数值传递的原理
阅读量:5012 次
发布时间:2019-06-12

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

什么是复制构造函数?一般都是系统有默认的复制构造函数,将类中的各个成员依次复制,我们基本不会手动使用它,如当对象产生副本时系统是通过复制构造函数来实现的。对于一般的程序开发来说它有什么用呢?我们可以通过自定义复制构造函数来按照我们自己的方式进行类的复制,也可以禁止复制……

#ifndef STUDENT_H#define STUDENT_H#include 
using namespace std;class student{ public: student(); student(int num, string name);//重载构造函数 student(student& st);//复制构造函数,形式是唯一的,必须用引用方式。 void CopyStudent(student st);//用于测试复制构造函数的效果 void print(); virtual ~student(); protected: private: int number; string name;};#endif // STUDENT_H

 

#include "../include/student.h"student::student(){    //ctor    number       = 0;    this->name   = "0000";}student::student(int num, string name){    //ctor    number       = num;    this->name   = name;}student::student(student& st){    name = "copy";     //自定义的复制方式,复制给副本}void student::print(){    cout<<"number:" << number<
name = st.name;}student::~student(){ //dtor}

 

#include 
#include "include/student.h"using namespace std;int main(){ student st0; student st1(1,"lee"); st0.print(); st1.print(); cout<< "after copy" <

如果整个程序中没有自定义复制构造函数,那么void CopyStudent(student st);函数就会将一个对象的成员拷贝到另一个对象中,这个过程是通过副本st传递的。但通过定义复制构造函数后,st副本无法按默认方式拷贝,而是使用自定义的复制构造函数方式传递。这样就可以实现禁止复制的效果。

本文是我学习了复制构造函数后写的,但对它在开发中怎么灵活使用还是一无所知,望同志们多多指教,有事例最好。另外通过学习我对函数中值的传递有了更为深刻的理解。

转载于:https://www.cnblogs.com/javaexam2/archive/2011/12/22/2632878.html

你可能感兴趣的文章
Linux查看进程的内存占用情况 分类: ubuntu ...
查看>>
[BZOJ 2818]Gcd
查看>>
FORM值传递与地址传递
查看>>
(译)yaml快速教程
查看>>
C:大数相加
查看>>
160. Intersection of Two Linked Lists
查看>>
人生苦短,我用python-- Day11
查看>>
JAVA Bean
查看>>
ehcache memcache redis 三大缓存男高音_转
查看>>
curd_3
查看>>
百度地图API示例之设置地图显示范围
查看>>
Java构造方法、重载及垃圾回收
查看>>
.Net Core AES加密解密
查看>>
Spring Quartz实现任务调度
查看>>
python | 桶排序、冒泡排序、选择排序、去重
查看>>
两个Html页面之间值得传递
查看>>
EasyUI datagrid 的多条件查询
查看>>
Mac升级bash到最新版本
查看>>
利用vagrant打包系统--制作自己的box
查看>>
美女与硬币问题
查看>>