假设我创建一个具有两个变量的结构。
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。
答案 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 问题,实际上这是一件大事。除非您拥有明智的设计,否则您的程序永远是不正确的。