+ -
当前位置:首页 → 问答吧 → 请叫一个类继承问题,基础问题。超级简单

请叫一个类继承问题,基础问题。超级简单

时间:2011-12-28

来源:互联网

C/C++ code
#ifndef BASEABC_H_
#define BASEABC_H_

// the part of abc
class Abc
{
private:
    enum {MX = 40};
    char fullname[MAX];
    long id;
public:
    Abc(const char * s ="no name",long n= 0L):fullname(s),id(n){}
    virtual ~Abc(){} = 0;
    virtual void set();
    virtual void show()const;
};

class Base:public Abc
{
private:
    double balance;
public:
    Base(const char * s ="no name",long n= 0L, double i = 0.0)
        :Abc(s,n,),balance(i){}
    Base(const Abc & s, double i = 0.0):Abc(s),balance(i){}
    virtual ~Base(){};
    virtual void set(double d)

};


请问这2句有问题不
1 virtual void show()const;
2 virtual void set(double d)
如果有:
我把第二句改成
  virtual void set()
在派生类加一个portected
里面来个get()函数,来读取私有数据
在virtual void set()函数里使用

作者: zjxzjx54   发布时间: 2011-12-28

virtual void set(double d);隐藏了基类中的set函数吧!

作者: yaningfan   发布时间: 2011-12-28

你把第二句改成
  virtual void set();在派生类加一个portected,里面来个get()函数,来读取私有数据,在virtual void set()函数里使用。
.....这叫覆盖了(override)基类的virtual void set();

作者: yaningfan   发布时间: 2011-12-28

请问这2句有问题不
1 virtual void show()const;
2 virtual void set(double d)

这两句都没有问题,如果在成员函数尾部加上const,表示this指针const,也就是不允许修改类的数据成员
在派生类中加上virtual void set(double d),也没有问题,这叫重写set函数,因为函数名相同,形参不同。重写是指派生类的函数屏蔽了与其同名的基类函数


把第二句改成
  virtual void set()
在派生类加一个portected
里面来个get()函数,来读取私有数据
在virtual void set()函数里使用
是覆盖,
Override(覆盖):是指派生类函数覆盖基类函数。既然都覆盖了基类的函数,当然也就屏蔽了基类函数了

作者: LoveIOS   发布时间: 2011-12-28

热门下载

更多