如何通过"& player"将对象转换为另一个继承的类构造函数("得分")?

时间:2015-11-17 23:23:40

标签: c++ object inheritance constructor initialization

我是C ++的新手,我正在创建一个小程序,以便更多地了解编程语言中的继承。

从我收集的内容来看,继承是指您拥有获取父/基类的所有成员函数和值的权限和权限。在现实生活中的类比将继承我父亲的一些物理属性,如眼睛颜色等(虽然我希望我能继承他的商业头脑......)

无论如何,我要做的一件事是尝试将已初始化的对象传递给继承的类构造函数。

到目前为止,这是我的代码:

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

class player{
private:
    string name;
    int level;

public:
    player(const string &n, const int &l) : name(n), level(l){};

    string getName() const {return name;}
    int getLevel() const {return level;}
};

class score: public player{
private:
    int scores;

public:
    score(const int &s, const string &n, const int &l) : player(n, l), scores(s){};
    void setScore(int newScores){scores = newScores;}
    int getScore() const {return scores;}
};

int main(){
    player steve("steve", 69);
    cout << steve.getName() << endl;
    cout << steve.getLevel() << endl;
}

基本上,我希望通过引用将我在main()程序函数steve中初始化的对象传递给score类中的构造函数。但是,我不知道该怎么做?会不会像score(const player &p, const int &s) : player(&p), scores(s)?我得到了如何传递像成员值,但我有兴趣传递对象本身?

如果有人可以在这里帮助我,那意味着很多,因为我真的很喜欢编程特别是C ++

1 个答案:

答案 0 :(得分:0)

您不能将基类(player)的对象扩展到子类(score)的对象,因为这需要在原始对象之后直接分配更多的内存空间存储子类的其他元素。

在您的示例中,您可以定义此构造函数以复制player对象中的值以用于新的score对象:

score(const player &p, const int &s) : player(p.n, p.l), scores(s){};

如果您只想链接播放器对象,则score类必须包含指向此对象的指针。