C++对象是怎样构造的(拷贝构造函数)

该程序定义了一个包含整型数据成员的类,并实现了默认构造函数、带参数的构造函数以及拷贝构造函数。根据输入的类型,程序会创建相应类型的类对象。输入0表示使用默认构造函数,输入1加一个整数使用带参数构造函数,输入2加一个整数则创建两个对象,一个用给定的整数构造,另一个用前一个对象构造。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

某个类包含一个整型数据成员.程序运行时若输入0表示用缺省方式定义一个类对象;输入1及一个整数表示用带一个参数的构造函数构造一个类对象;输入2及一个整数表示构造2个类对象,一个用输入的整数构造,另一个用前一个对象构造。试完成该类的定义和实现。

输入

测试数据的组数 t

第一组数

第二组数

......

输出

第一个对象构造输出

第二个对象构造输出

......

输入样例1

3
0
1 10
2 20

输出样例1

Constructed by default, value = 0
Constructed using one argument constructor, value = 10
Constructed using one argument constructor, value = 20
Constructed using copy constructor, value = 20

#include<iostream>
using namespace std;
class Member
{
    int type;
    int x;
public:
    Member();
    Member(int _x);
    Member(const Member &member);
};
Member::Member()
{
    cout<<"Constructed by default, value = 0"<<endl;
}
Member::Member(int _x)
{
    x=_x;
    cout<<"Constructed using one argument constructor, value = "<<x<<endl;
}
Member::Member(const Member &member)
{
    x=member.x;
    cout<<"Constructed using copy constructor, value = "<<x;
}
int main()
{
    int t,i;
    int type;
    int _x;
    i=0;
    cin>>t;
    for(i=0;i<t;i++)
    {
        cin>>type;
        if(type==0)
        {
            Member ();
        }
        else if(type==1)
        {
            cin>>_x;
            Member m1(_x);
        }
        else if(type==2)
        {
            cin>>_x;
            Member m2(_x);
            Member m3(m2);
        }
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值