第12章 类和内存动态分配复习题

1

a

没有为str,len制定默认值

b

str指向s,可能存在二次释放的问题;len 应该为strlen(s) + 1

c

没有为str分配内存,应使用new char[strlen(s) + 1]来分配

2

析构函数里没有将指针成员释放
复制和赋值时,直接使用浅复制,导致内存二次释放
构造函数和析构函数中new和delete不对应。

3

默认构造函数、析构函数、拷贝(复制)构造函数、赋值函数

4

class nifty
    {
    private:
        char personality[40];
        int talents;
    public:
        nifty();
        nifty(const char * s);
        friend ostream & operator<<(ostream& os, const nifty& n);
    };
    
    nifty::nifty()
    {
        personality[0] = '\0';
        talents = 0;
    }
    
    nifty::nifty(const char* s)
    {
        strcpy(personality, s);
        talents = 0;
    }
    
    ostream & operator<<(ostream& os, const nifty& n)
    {
        os << n.personality << ":" << n.talents;
        return os;
    }

5

a

1. Golfer ()
2. Golfer(const char * name, int g = 0)
3. Golfer(const char * name, int g = 0)
4. Golfer ()
5. Golfer (const Golfer & g)
6. Golfer(const char * name, int g = 0)
7. 默认的赋值运算符
8. 默认的赋值运算符

b

一个可以进行深度复制的赋值运算符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值