如何解决如果一个类包含另一个类的对象,并且所有类都通过构造函数初始化,那么初始化如何工作?
我想知道一个类是否包含另一个类的对象,并且两个类都具有构造函数,如何在包含另一个类的对象的类中的构造函数中进行初始化。初始化的顺序是什么?
class Person
{
string name;
int age;
public:
Person()
{
name="NULL";
age=0;
}
};
class Student
{
int roll_no;
Person p;
int division;
public:
Student()
{
roll_no=0;
division=0;
}
};
在此示例中,在学生类构造函数中,我们是否需要放置类似
的代码?Student()
{
roll_no=0;
p.Person();
division=0;
}
我们是否需要放入p.Person();
来初始化p?
p创建时不会自动初始化,因为它具有构造函数。在这种情况下,通过构造函数初始化的顺序是什么?
解决方法
我们需要放置
p
来初始化Student
吗?
不,您不能这样做。 initialization order是:
- ...
- ...
- 然后,按类定义中的声明顺序初始化非静态数据成员。
- 最后,执行构造函数的主体
例如,当类型为roll_no
的对象被默认初始化时,成员p
首先被默认初始化,然后Person
通过默认的构造函数{被初始化。 {1}},然后division
被默认初始化,最后调用Student
的默认构造函数,并分配roll_no
和division
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。