这是一个非常基本的问题,但是对于变量的声明,构造函数称为吗?
Amazon.Auth.AccessControlPolicy
答案 0 :(得分:2)
注释起来,int
是 POD(普通旧数据)类型。
C ++中的普通旧数据结构是一个聚合类,其中包含 仅PODS作为成员,没有用户定义的析构函数,没有用户定义 复制分配运算符,并且没有非静态成员 成员指针类型
请注意,构造函数不过是成员函数。成员函数必须属于一个类,并且如上所述,int
只是内置的基本变量类型,不是类。因此,要回答您的问题,没有构造函数需要声明非类类型,例如原始数据类型,数组类型,指针类型等。
但是,这可能会导致人们误解为看到这样的初始化;
int var(10);
即使它的外观和行为与构造函数非常相似,也没有所谓的构造函数。这只是一个初始化。 int var(10);
等于int var = 10;
。
答案 1 :(得分:1)
首先,您必须了解内置类型没有拥有构造函数;这是为用户定义的类型(类)保留的特权。
您真正要问的是类型Derived
的数据成员是否默认为零初始化,答案为no;它们是“默认初始化的”,这使它们具有无法读取的未指定值。
您应该在类构造函数int
中自己初始化y
-这就是它的作用!假设您希望它为零:
A()
全局变量有些不同。上面我所写的内容对于这些基本上仍然是正确的,但是由于它们具有静态存储持续时间,因此有一个“额外”步骤使程序启动前所有位都为零。尽管缺少显式的初始值设定项,它的作用是使class A
{
public:
int y;
A() : y(0) {}
};
初始化为零,您可以依靠它。
您的C ++书籍中有关变量初始化的章节将对此进行更详细的介绍。