设计一个Dog类,包含name、age、sex和weight等属性以及对这些属性操作的方法。实现并测试这个类。

完成以下要求:

  1. 类放到头文件dog.h中、成员函数定义文件放到源文件dog.cpp中、主函数放到源文件mian.cpp文件中。
  2. 根据类的封装性要求,把name、age、sex和weight声明为私有的数据成员,编写公有成员函数setdata()对数据进行初始化;
  3. GetName()、GetAge()、GetSex()和GetWeight()获取相应属性;
  4. SetName(string )、SetAge(int )、SetSex(char )和SetWeight(double )能够修改相应属性。
  5. 使用带有默认参数的构造函数对对象进行初始化;
  6. 使用析构函数,在函数中可以输出对象的相应属性。
  7. 声明多个对象,观察构造函数的调用顺序和析构函数的调用顺序。

没注释的源代码

#include <iostream>

#include<string>

#include "dog.h"

using namespace std;

void Dog::setdata()

{

    name="zhangsan";

    age=18;

    sex='m';

    weight=15;

}

void Dog::GetName()

{

    cout<<"name:"<<name<<endl;

}

void Dog::GetAge()

{

    cout<<"age:"<<age<<endl;

}

void Dog::GetSex()

{

    cout<<"sex:"<<sex<<endl;

}

void Dog::GetWeight()

{

    cout<<"weight:"<<weight<<endl;

}

void Dog::SetName(string n)

{

    name=n;

}

void Dog::SetAge(int a)

{

    age=a;

}

void Dog::SetSex(char s)

{

    sex=s;

}

void Dog::SetWeight(double w)

{

    weight =w;

}

Dog::Dog(string n,int a,char s,double w):name(n),age(a),sex(s),weight(w){}

Dog::~Dog()

{

    cout<<"destructor called"<<" "<<name<<" "<<age<<" "<<sex<<" "<<weight<<endl;

}

//新建一个文件

#include <iostream>

#include "dog.h"

using namespace std;

int main()

{

    Dog d1;

    d1.GetName();

    d1.GetAge();

    d1.GetSex();

    d1.GetWeight();

    Dog d2("wangwu",16,'m',20);

    d2.setdata();

    d2.GetName();

    d2.GetAge();

    d2.GetSex();

    d2.GetWeight();

    Dog d3("dog3",17,'m',21);

    d3.SetName("dog4");

    d3.SetAge(16);

    d3.SetSex('f');

    d3.SetWeight(30);

    d3.GetName();

    d3.GetAge();

    d3.GetSex();

    d3.GetWeight();

    return 0;

}

#include<string>

using namespace std;

class Dog

{

private:

    string name;

    int age;

    char sex;

    double weight;

public:

    void setdata();

    void GetName();

    void GetAge();

    void GetSex();

    void GetWeight();

    void SetName(string );

    void SetAge(int );

    void SetSex(char );

    void SetWeight(double );

    Dog(string n="lisi",int a=16,char s='f',double w=10);

    ~Dog();

};

### 回答1: 以下是一个Python中定义Dog的例子: ```python class Dog: def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex ``` 这里我们使用`class`关键字来定义一个名为`Dog`。`__init__`方法是Python中的构造函数,它会在创建的实例时被调用。在这里,我们将`name`、`age`和`sex`作为参数传递给`__init__`方法,并将它们赋值给实例的相应属性。 现在,我们可以使用这个创建一个名为`my_dog`的实例: ```python my_dog = Dog("Buddy", 3, "male") ``` 这里我们传递了三个参数,分别是狗的名字、年龄和性别。现在,`my_dog`实例的属性值分别为: ```python print(my_dog.name) # 输出 "Buddy" print(my_dog.age) # 输出 3 print(my_dog.sex) # 输出 "male" ``` ### 回答2: Dog一个描述狗的,它包含了狗的名字(name),年龄(age)和性别(sex)等属性。 首先,我们可以定义一个Dog,其中有三个实例变量name,agesex,用来分别表示狗的名字、年龄和性别。 ```python class Dog: def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex ``` 然后,我们可以创建一个Dog的实例,给它的属性赋予具体的值。 ```python dog1 = Dog("旺财", 3, "公") dog2 = Dog("小白", 2, "母") ``` 通过以上代码,我们创建了两个狗的实例,一个名叫旺财,年龄为3岁,性别为公;另一个名叫小白,年龄为2岁,性别为母。 我们可以通过访问对象属性来获取这些信息。 ```python print(dog1.name) # 输出:旺财 print(dog1.age) # 输出:3 print(dog1.sex) # 输出:公 print(dog2.name) # 输出:小白 print(dog2.age) # 输出:2 print(dog2.sex) # 输出:母 ``` 以上代码展示了如何通过访问对象属性来获取狗的名字、年龄和性别等信息。 总结一下,Dog一个描述狗的,通过实例变量name,agesex来表示狗的名字、年龄和性别等属性。我们可以通过创建Dog的实例来实例化具体的狗的对象,并通过访问对象属性来获取狗的具体信息。 ### 回答3: Dog一个用于描述狗的。它包含了狗的名字(name),年龄(age)和性别(sex)这三个属性。 首先,我们可以在Dog中定义一个构造函数,以便在创建对象时能够为每个狗提供名字、年龄和性别的初始值。构造函数可以如下所示: ```python class Dog: def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex ``` 在这个构造函数中,self代表当前正在创建的实例。通过self.name,self.age和self.sex,我们可以分别为每个狗对象设置它们的名字、年龄和性别属性。 接下来,为了方便访问和设置这些属性,我们可以为Dog添加get和set方法。例如,我们可以添加一个getName方法来获取狗的名字,并为每个属性添加相应的set方法。可以按照以下方式添加这些方法: ```python class Dog: def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex def getName(self): return self.name def getAge(self): return self.age def getSex(self): return self.sex def setName(self, name): self.name = name def setAge(self, age): self.age = age def setSex(self, sex): self.sex = sex ``` 通过这些get和set方法,我们可以方便地获取和设置Dog对象属性。 综上所述,Dog包含了name,agesex这三个属性,并提供了相应的方法来访问和设置这些属性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值