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

时间:2018-09-19 08:37:36

标签: c++ class constructor derived

假设我创建一个具有两个变量的结构。

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

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

在mystruct中,如果我创建了一个重载的构造函数来分配两个变量值,但是我只想通过该类创建obj。该构造函数如何发挥作用?我可以将其放置在类中以访问mystruct的变量吗?

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

例如如果创建School obj,是否可以让构造函数自动设置mystruct.name和mystruct.age?我不想在School类之外创建mystruct obj。

1 个答案:

答案 0 :(得分: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;
}

您的课堂设计很奇怪。学校(大概)是学生的集合,但是您的设计似乎只允许一个学生。需要进一步解决,然后再解决。

这里有一个技术问题(如何调用基类构造函数)。但是,不要让您以为您已经解决了 class design 问题,实际上这是一件大事。除非您拥有明智的设计,否则您的程序永远是不正确的。