一切皆对象

本文通过一个简单的C++示例程序介绍了对象的创建与销毁过程,重点解释了构造函数、拷贝构造函数和析构函数的工作原理。文章还展示了如何根据不同情况输出相应的信息。

Description

一切都是对象 —— Everything is an object。 所以,现在定义一个类Thing,来描述世界上所有有名字的事物。该类只有构造函数、拷贝构造函数和析构函数,并具有一个字符串数据成员来存储其名字。

Input

输入只有1行,是一个没有空白符的字符串。

Output

见样例。

Sample Input
NAME
Sample Output
A thing without name is created!
A thing without name is copied!
A thing named by NAME is created!
A thing named by NAME is copied!
A thing named by NAME is erased!
A thing named by NAME is erased!
A thing without name is erased!
A thing without name is erased!
HINT

Append Code
append.cc,

int main()
{
    string name;
    Thing Thing1, Thing2(Thing1);
    cin>>name;
    Thing Thing3(name);
    Thing Thing4(Thing3);
    return 0;
}

AC代码

#include <iostream>

using namespace std;
class Thing
{
private:
    string name;
public:
    Thing():name(""){cout<<"A thing without name is created!"<<endl;}
    Thing(string na):name(na){cout<<"A thing named by "<<name<<" is created!"<<endl;}
    Thing(const Thing& p):name(p.name)
    {
        if(name=="")  cout<<"A thing without name is copied!"<<endl;
        else          cout<<"A thing named by "<<name<<" is copied!"<<endl;
    }
    ~Thing()
    {
        if(name=="")  cout<<"A thing without name is erased!"<<endl;
        else          cout<<"A thing named by "<<name<<" is erased!"<<endl;
    }
};
int main()
{
    string name;
    Thing Thing1, Thing2(Thing1);
    cin>>name;
    Thing Thing3(name);
    Thing Thing4(Thing3);
    return 0;
}

注意:
1、给定义空字符的方法;
2、如何通过一个构造函数实现多功能;
3、拷贝构造函数中不要忘记p.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值