第13章 类继承

一个普通的类继承,包括构造函数传对象引用和参数列表初始化#ifndef TABLETENN1_H_
#define TABLETENN1_H_
#include<string>
using namespace std;
class TableTennisPlayer
{
private:
    string firstname;
    string lastname;
    bool hasTable;
public:
    TableTennisPlayer(const string &fn="none",const string &ln="none",bool ht=false);
    void Name()const;
    bool HasTable()const
    {
        return hasTable;
    }
    void ResetTable(bool v)
    {
        hasTable=v;
    }
};
class RatedPlayer:public TableTennisPlayer
{
private:
    int rating;
public:
    RatedPlayer(int r=0,const string &fn="none",const string &ln="none",bool ht=false);
    RatedPlayer(int r,const TableTennisPlayer &tp);
    int Rating()const
    { return rating;}
    void ResetRating(int r)
    { rating=r;}
};
#endif
#include<iostream>
#include"tabtenn1.h"
using namespace std;
TableTennisPlayer::TableTennisPlayer(const string &fn,const string &ln,bool ht)
{
    firstname=fn;
    lastname=ln;
    hasTable=ht;
}
void TableTennisPlayer::Name()const
{
    cout<<lastname<<", "<<firstname;
}
RatedPlayer::RatedPlayer(int r,const string &fn,const string &ln,bool ht)
{
    TableTennisPlayer(fn,ln,ht);
    rating=r;
}
RatedPlayer::RatedPlayer(int r, const TableTennisPlayer &tp):TableTennisPlayer(tp)
{
    rating=r;
}
#include<iostream>
#include"tabtenn1.h"
using namespace std;
int main()
{
    TableTennisPlayer player1("Tara","Boomdea",false);
    RatedPlayer rplayer1(1140,"Maloory","Duck",true);
    rplayer1.Name();
    if(rplayer1.HasTable())
        cout<<" has a table!"<<endl;
    else
        cout<<" hasn‘t a table!"<<endl;
    player1.Name();
    if(player1.HasTable())
        cout<<" has a table!"<<endl;
    else
        cout<<" hasn‘t a table!"<<endl;
    cout<<"Name:";
    rplayer1.Name();
    cout<<";Rating: "<<rplayer1.Rating();

    RatedPlayer rplayer2(1212,player1);
    cout<<"Name: ";
    rplayer2.Name();
    cout<<";Rating: "<<rplayer2.Rating()<<endl;

    return 0;
}
时间: 2024-08-08 10:05:09

第13章 类继承的相关文章

C++ primer plus读书笔记——第13章 类继承

第13章 类继承 1. 如果购买厂商的C库,除非厂商提供库函数的源代码,否则您将无法根据自己的需求,对函数进行扩展或修改.但如果是类库,只要其提供了类方法的头文件和编译后的代码,仍可以使用库中的类派生出新的类.而且可以在不公开实现的情况下将自己的类分发给其他人,同时允许他们在类中添加新特性. 2. 派生类构造函数首先创建基类对象,如果不调用基类构造函数,程序将使用默认的基类构造函数. 3. 创建派生类对象时,程序首先调用基类构造函数,然后再调用派生类构造函数.派生类对象过期时,程序将首先调用派生

《C++ Primer Plus》第13章 类继承 笔记

类继承通过使用已有的类(基类)定义新的来(派生类),使得能够根据需要修改编程代码.共有继承建立is-a关系,这意味着派生类对象也应该是某种基类对象.作为is-a模型的一部分,派生类继承基类的数据称源和大部分方法,但不继承基类的构造函数.析构函数和赋值运算符.派生类可以直接访问基类的公有成员和保护成员,并能够通过基类的共有方法和保护方法访问基类的私有成员.可以在派生类中新增数据成员和方法,还可以将派生类用作基类,来做进一步的开发.每个派生类都必须有自己的构造函数.程序创建派生类对象时,将首先调用基

《python解释器源码剖析》第13章--python虚拟机中的类机制

13.0 序 这一章我们就来看看python中类是怎么实现的,我们知道C不是一个面向对象语言,而python却是一个面向对象的语言,那么在python的底层,是如何使用C来支持python实现面向对象的功能呢?带着这些疑问,我们下面开始剖析python中类的实现机制.另外,在python2中存在着经典类(classic class)和新式类(new style class),但是到Python3中,经典类已经消失了.并且python2官网都快不维护了,因此我们这一章只会介绍新式类. 13.1 p

C#图解教程 第七章 类和继承

类和继承 类继承 通过继承我们可以定义一个新类,新类纳入一个已经声明的类并进行扩展. 可以使用已存在的类作为新类的基础.已存在类称为基类(base class),新类称为派生类(derived class).派生类组成如下: 本身声明中的成员 基类的成员 声明派生类,需要在类名后加入基类规格说明 派生类扩展它的基类,因为它包含了基类的成员,加上它本身声明中的新增功能 派生类不能删除它所继承的任何成员 例:OtherClass类,继承自SomeClass class OtherClass:Some

scala学习手记13 - 类继承

在scala里,类继承有两点限制: 重写方法需要使用override关键字: 只有主构造函数才能往父类构造函数中传参数. 在java1.5中引入了override注解,但不强制使用.不过在scala中要想重写方法必须使用override关键字.如果确实重写了父类的方法又不使用override关键字的话,则会在编译时报错,提示没有使用override修饰符. scala的副构造函数必须调用主构造函数或是另一个副构造函数.只有在主构造函数中才能向父类的构造函数中传递数据.可以看出来主构造函数如同父类

第 13 章 装饰模式【Decorator Pattern】

以下内容出自:<<24种设计模式介绍与6大设计原则>> Ladies and gentlemen,May I get your attention,Please?,Now I’m going to talk about decoratorpattern.装饰模式在中国使用的那实在是多,中国的文化是中庸文化,说话或做事情都不能太直接,需要有技巧的,比如说话吧,你要批评一个人,你不能一上来就说你这个做的不对,那个做的不对,你要先肯定他的成绩,表扬一下优点,然后再指出瑕疵,指出错误的地方

第13章 线程

第13章 线程线程具有提高执行速度的特点. 本章重点:----------------------------------线程的基本概念创建并使用线程线程的让步.同步等操作 进程就是一个执行中的程序,每一个进程都有其独立的内存空间和系统资源.进程就是一个运行的程序,Windows操作系统是支持多进程的操作系统,即同一时间可以执行多个程序,每个程序是在自己独立的内存空间内,使用自己被分配到的系统资源.线程是CPU调度和分派的基本单位,一个进程可以由多个线程组成,而这多个线程共享同一个存储空间,这使

第13章 网络编程

1 /***************** 2 ***第13章 网络编程 3 *******知识点: 4 **************1.基本概念 5 ******************1.1 网络OSI模型 6 ******************1.2 IP地址 7 ******************1.3 端口地址 8 ******************1.4 通讯协议 9 **************2.Java网络相关类 10 ******************2.1 URLDe

转载---编写高质量代码:改善Java程序的151个建议(第3章:类、对象及方法___建议47~51)

阅读目录 建议47:在equals中使用getClass进行类型判断 建议48:覆写equals方法必须覆写hashCode方法 建议49:推荐覆写toString方法 建议50:使用package-info类为包服务 建议51:不要主动进行垃圾回收 回到顶部 建议47:在equals中使用getClass进行类型判断 本节我们继续讨论覆写equals的问题,这次我们编写一个员工Employee类继承Person类,这很正常,员工也是人嘛,而且在JavaBean中继承也很多见,代码如下: 1 p