c++ 深拷贝 浅拷贝

需要注意,在C++的类定义中,有赋值构造函数和拷贝构造函数。所以在执行A b=a操作时,会重新分配空间,属于深赋值。

 cout<<"vector是对象,深赋值"<<endl;
    vector<string> a={"a","f","g"};
    vector<string> b =a;
    b[2] = "kk";
    for(int i = 0; i < 3; i++){
        cout<<a[i];
     
    }
    cout<<endl;
    for(int i = 0; i < 3; i++){
        cout<<b[i];
        
    }
    cout<<endl;
    cout<<"string是对象,深赋值"<<endl; //注意d和c的首地址不一样,但d==c时为true
    string c = "string";
    string d = c;
    d[2] = 'p';
    cout<<c<<","<<d;
    cout<<endl;
    cout<<"char*,浅赋值:"<<endl;
   // char *e = new char[3];
    const char * temp = c.c_str();
    char *e  = const_cast<char*>(temp);
    char *f = e;
    *(++f) = 'h';
    cout<< e <<","<<f;
    cout<<endl;

结果:

vector是对象,深赋值
afg
afkk
string是对象,深赋值
string,stping
char*,浅赋值:
shring,hring

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值