前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >复制控制---复制构造函数

复制控制---复制构造函数

作者头像
用户1154259
发布2018-01-17 18:26:32
1.2K0
发布2018-01-17 18:26:32
举报

复制构造函数

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

主要用于:

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

代码语言:javascript
复制
string a = "abc"; //调用复制构造函数将a初始化为abc
string aa = string(); //调用string()的构造函数,创建一个新的对象,再调用 复制构造函数初始化aa

string aa(5,"c"); //直接初始化

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

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

代码语言:javascript
复制
AA function(AA& a){
...
  return a;  
}

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

代码语言:javascript
复制
vector<string> arr(6); //调用int默认构造函数,然后调用复制构造函数给vector进行初始化

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

代码语言:javascript
复制
AA a[] =  {
1,"aa",
3,"cc",
4,"dd",
AA()
}

自定义复制构造函数

代码语言:javascript
复制
class AA{
public:
AA();
AA(const AA&);
};

禁止复制

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

课后习题

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

类定义:

代码语言:javascript
复制
struct NOName{
   NoName():pstring(new std::string),i(0),d(0){}
private:
std::string *pstring;
int i;
double d; 
};
代码语言:javascript
复制
#include "stdafx.h"
#include <iostream>
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<<a.pstring<<endl;
    cout<<b.pstring<<" "<<b.i<<" "<<b.d<<endl;
    system("pause");
}

输出如下:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-11-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 复制构造函数
  • 自定义复制构造函数
  • 禁止复制
  • 课后习题
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档