C ++(控制台)构造函数和派生类

问题描述 投票:0回答:1

假设我创建了一个包含两个变量的结构。

struct mystruct{
public:
string name;
int age;};

class School :public mystruct{
private:
mystruct student;
bool status;
int major;}

在mystruct中,如果我创建了一个重载的构造函数来赋值我的两个变量值,但我只想通过类创建obj。这个构造函数怎么可能发挥作用?我会把它放在类中以访问mystruct的变量吗?

注意:我知道我没有在这里放置任何构造函数,但在继续之前我想知道这个问题。

防爆。如果我创建一个学校obj,我可以自动设置构造函数mystruct.name和mystruct.age吗?我不想在类School之外创建mystruct obj。

c++ class constructor derived
1个回答
1
投票

你有一个问题,mystruct既是基类,也是School的成员。不是错误,而是有点奇怪。由于您的问题是关于派生类,我将忽略成员变量。

您可以从mystruct的构造函数中调用School的构造函数。例如

struct mystruct{
public:
    mystruct(string n, int a) : name(n), age(a) {}
    string name;
    int age;
};

class School : public mystruct {
public:
    School(string name, int age, bool s, int m) : 
        mystruct(name, age), // call to the base class constructor
        status(s), major(m) {}
private:
    bool status;
    int major;
}

你的课堂设计很奇怪。学校(大概)是学生的集合,但你的设计似乎只允许一个学生。在你继续前进之前需要修复。

我在这里回答了技术问题(如何调用基类构造函数)。但是,不要让那个让你认为你已经解决了类设计问题,这实际上是一个更大的交易。在您拥有合理的设计之前,您的计划永远不会是正确的。

© www.soinside.com 2019 - 2024. All rights reserved.