C++-派生类的定义和使用

6-5 派生类的定义和使用 (10分)

按要求完成下面的程序:
1、定义一个Animal类,包含一个void类型的无参的speak方法,输出“animal language!”。
2、定义一个Cat类,公有继承自Animal类,其成员包括:
(1)私有string类型的成员m_strName;
(2)带参数的构造函数,用指定形参对私有数据成员进行初始化;
(3)公有的成员函数print_name,无形参,void类型,功能是输出成员m_strName的值,具体输出格式参见main函数和样例输出。

类和函数接口定义:

参见题目描述。

裁判测试程序样例:

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

/* 请在这里填写答案 */

int main()
{
    Cat cat("Persian"); //定义派生类对象
    cat.print_name();	//派生类对象使用本类成员函数
    cat.speak();	//派生类对象使用基类成员函数
    return 0;
}

输入样例:

本题无输入。

输出样例:

cat name: Persian
animal language!

 我的代码:

class Animal
{
private:
    
public:
    void speak()
    {
        cout<<"animal language!";
    }
};

class Cat:public Animal
{
private:
    string m_strName;
    
public:
    Cat(string name)
    {m_strName=name;}
    string Getname()
    {return m_strName;}
    void print_name()
    {cout<<"cat name: "<<Getname()<<endl;}
};

 Q:使用strcpy报错,未解决

编译环境为Xcode    PTA已通过

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
派生类是基于已有的基创建的新,它继承了基的所有成员和方法,并可以添加自己的成员和方法。派生类可以重写基的方法,也可以定义自己的方法。 派生类定义格式如下: ```c++ class DerivedClass : accessSpecifier BaseClass { // class members and functions } ``` 其中,`DerivedClass`是新创建的派生类的名称,`accessSpecifier`可以是`public`、`protected`或`private`,表示派生类继承基成员的访问权限,`BaseClass`是基的名称。 派生类使用与基似,可以使用的成员和方法,也可以使用自己添加的成员和方法。可以通过派生类的对象访问基的成员和方法,也可以通过基的指针或引用访问派生类的成员和方法。 例如,下面的代码定义了一个基`Shape`和两个派生类`Circle`和`Rectangle`: ```c++ #include <iostream> using namespace std; class Shape { public: void setWidth(int w) { width = w; } void setHeight(int h) { height = h; } protected: int width; int height; }; class Circle : public Shape { public: double getArea() { return 3.14 * width * width / 4; } }; class Rectangle : public Shape { public: int getArea() { return width * height; } }; int main() { Circle c; c.setWidth(5); cout << "Circle area is " << c.getArea() << endl; Rectangle r; r.setWidth(5); r.setHeight(10); cout << "Rectangle area is " << r.getArea() << endl; return 0; } ``` 在这个例子中,`Circle`和`Rectangle`都继承了`Shape`的成员`width`和`height`,并且分别实现了自己的方法`getArea`。在`main`函数中,分别创建了`Circle`和`Rectangle`的对象,并设置了它们的宽度和高度,然后分别调用了它们的`getArea`方法输出面积。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值