#include <iostream>
using namespace std;
class A
{
private:
char *a;
public:
A(char *a){
this->a=new char[strlen(a)+1];
strcpy(this->a,a);
}
A(const A&other){
this-&g

展开全部
收起
4回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • 666Olivia

    16人对此回答表示赞同

    很遗憾,在我这里面两个变量指向的地方不一样
    程序没结束前不会出错,即aa.out()执行完不会出错
    但是结束会出错,因为b的析构函数之前就调用过了
    展开
    16
    0回复
    发布于 5年前

    评论(0)

    收起评论

  • Mia米娅

    13人对此回答表示赞同

    应该写成 A bb(aa);

    如果想用 A bb=aa; 你需要重载运算符才能深拷贝。
    展开
    13
    0回复
    发布于 5年前

    评论(0)

    收起评论

  • Jose

    9人对此回答表示赞同

    我们首先讨论//bb.~A();一个对象生命期结束的时候,系统会调用其析构函数来清理其使用的资源,如内存等。就是死了,由别人清理尸体。
    显然自己清理自己尸体是不符合逻辑的。

    其次,虽然类中定义了拷贝构造函数,也是正确的,但是你的调用方法错了。
    A bb=aa;很显然是赋值,对象名就是指向该对象的地址,在你学习数组的时候,应该对这个有比较深刻的理解。
    这句话就是定义了一个对象,并把一个对象的地址给它,很显然他们指向了同一个地址。

    展开
    9
    0回复
    发布于 5年前

    评论(0)

    收起评论

  • 神庙逃亡者

    8人对此回答表示赞同

    你为什么要 使数据成员 命名a ? 只会增加混乱

    bb.~A();没有必要 改成

    {
    A bb=aa; //出作用域 析构
    }
    不行么?
    展开
    8
    0回复
    发布于 5年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部