博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
复制控制---复制构造函数
阅读量:7247 次
发布时间:2019-06-29

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

复制构造函数

只有单个形参,而且该参数是对本类类型对象的引用。

主要用于:

1 根据另一个同类型的对象显示或隐式的初始化一个对象

string a = "abc"; //调用复制构造函数将a初始化为abcstring aa = string(); //调用string()的构造函数,创建一个新的对象,再调用 复制构造函数初始化aastring aa(5,"c"); //直接初始化

2 复制一个对象,将它作为实参传给一个函数

 

3 从函数返回时复制一个对象

AA function(AA& a){...  return a;  }

4 初始化顺序容器中的元素

vector
arr(6); //调用int默认构造函数,然后调用复制构造函数给vector进行初始化

5 根据元素初始化数组元素

AA a[] =  {1,"aa",3,"cc",4,"dd",AA()}

 

自定义复制构造函数

class AA{public:AA();AA(const AA&);};

禁止复制

 显式的声明其复制构造函数为private.

 

课后习题

对如下类进行定义,编写一个复制构造函数复制所有成员。复制pstring指向的对象而不是复制指针。

类定义:

struct NOName{   NoName():pstring(new std::string),i(0),d(0){}private:std::string *pstring;int i;double d; };

 

#include "stdafx.h"#include 
using namespace std;struct NoName{ NoName():pstring(new std::string),i(0),d(0){} NoName(const NoName&);public: std::string *pstring; int i; double d; };NoName::NoName(const NoName& other){ pstring = new std::string; *pstring = *(other.pstring); i = other.i; d = other.d;}int main(){ NoName a; string *p; string abc="hello"; p = &abc; a.pstring = p; a.i = 2; a.d = 3; NoName b = a; cout<
<

输出如下:

 

转载地址:http://awnbm.baihongyu.com/

你可能感兴趣的文章
samtools和bcftools使用说明
查看>>
OC中使用 static 、 extern、 const使用
查看>>
Code Chef January Challenge 2019题解
查看>>
洛谷P3527 [POI2011]MET-Meteors(整体二分)
查看>>
extjs 点击链接到另一个页面 并激活另一个页面的指定tab
查看>>
JAVA Shallow heap & Retained heap
查看>>
2018"百度之星"程序设计大赛 - 资格赛
查看>>
DGUT_FLY退役贴 && FunCfans毕业总结-竞赛篇
查看>>
[]斯特林数
查看>>
麻省理工学院公开课:经典力学
查看>>
一点声明
查看>>
【百度人脸识别开发套件】开放人脸识别APP及SDK,加速二次开发进程
查看>>
2017京东笔试总结
查看>>
人生真是圆的,从BASIC开始的程序人生,又回到了BASIC,难道。。。。。
查看>>
JavaScript基础语法
查看>>
习题6-4 使用函数输出指定范围内的Fibonacci数
查看>>
代码清单3-10 一个完整的泛型枚举——从0枚举到9
查看>>
myeclipse 编码问题
查看>>
POJ1637 Sightseeing Tour
查看>>
spring数据绑定默认的日期解析格式解析不了yyyy格式
查看>>