C++(笔记)string,类的组合练习

//1. 定义一个Cat类,包含一个名字属性,用string对象存放该属性,编写存取该属性的函数,并进行测试。
#include <iostream>
#include <string>
using namespace std;

class Cat{
    public:
        void setname(string newname);
        void getname();
    private:
        string name;
};

void Cat::setname(string newname)
{
    name=newname;
}

void Cat::getname()
{
    cout<<name<<endl;
}

int main()
{
    Cat myCat;
    myCat.setname("mimi");
    myCat.getname();
    return 0;
}


//2. 定一个Data类,内含一个char* p成员变量,要求在构造函数中给p分配100字节内存,在析构函数中释放内存。
#include <iostream>
#include <string>
using namespace std;

class Data{
    public:
        void setData(char m[100]);
        void getData();
        Data();
        ~Data();
    private:
        char *p;
}; 


void Data::getData()
{
    p="sasas";
    cout<<p<<endl;
}

Data::Data()
{
    cout<<"调用无参构造器"<<endl;
    char *p=new char[100];
}
Data::~Data()
{
    cout<<"调用析构器"<<endl;
    delete []p;
}
int main()
{
    Data my;
    my.getData();

    return 0;
}


//3.   (1)定义一个head类,包含一个年龄属性,编写一个带一个参数的构造函数,并定义好相关存取函数。(2)定义一个body类,包含一个重量属性,编写一个带一个参数的构造函数,并定义好相关存取函数。(3)定义一个person类,包含一个head对象,一个body对象和一个姓名属性,定义一个带三个参数的构造函数,用初始化列表初始化内含的head对象、body对象和姓名属性。进行简单的测试。

#include <iostream>
#include <string>
using namespace std;

class head{
    private:
        int age;
    public:
        head(int age1=0)
        {
            age=age1;
            cout<<age<<endl;    
        }
        head(head &p)
        {
            age=p.age;
            cout<<"copy"<<age<<endl;
        }
        int get1()
        {
            return age;
        }
};

class body{
    private:
        int weight;
    public:
        body(int weight1=0)
        {
            weight=weight1;
            cout<<weight<<endl;
        }
        body(body &q)
        {
            weight=q.weight;
            cout<<"copy"<<weight<<endl;
        }
        int get2()
        {
            return weight;
        }
};

class person{
    private:
        head mage;
        body mweight;
        string name;
    public:
        person(int newname){
            name=newname;

        }
        string getn()
        {
            return name;
        }
        person(head pmage,body pmweight,string pname):mage(pmage),mweight(pmweight),name(pname)
        {
            cout<<"person constructior"<<endl;
        }   
        int get3()
        { 
            int a=mage.get1();
            return a;
        }
        int get4()
        {
            int b=mweight.get2();
            return b;
        }
};

int main()
{
    head p1(18);
    body p2(100);
    person person(p1,p2,"xlj");
    cout<<person.get3()<<endl;
    cout<<person.get4()<<endl;
    cout<<person.getn()<<endl;
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值