繁体   English   中英

C ++中变量的初始化

[英]Initialization of Variables in C++

根据我的知识,我所知道的是,您应该始终将整数设置为特定值,因为编译器将为它们分配垃圾值。 现在我正在使用一个程序并初始化一个字符串数组,并且想知道它与std :: strings的情况相同。 他们也分配了一些垃圾价值吗? 其他原始类型呢? 这只是原始类型,如int,long,char。 如果你有一个带有std :: string,int等成员变量的对象; 他们也分配了垃圾值吗? (我正在研究C ++)。

加上其他编程语言是一样的吗?

[strings]是否也分配了一些垃圾值? 其他原始类型呢?

C ++标准库的std::string (即std::string不是基本类型。 与原始类型不同,它有一个构造函数,当您不指定任何值时将调用它。

另一方面,原始类型(如intlongchar保持未初始化,除非您提供显式初始化程序,或将它们放在静态内存中(在这种情况下它们是零初始化的)。

std :: string的默认构造函数,“构造一个空字符串,长度为零个字符。”

http://www.cplusplus.com/reference/string/string/string/

如果你有一个混合了基元和非基元的对象(类),则会调用非基元的默认构造函数,如果它们不是类的成员,那么基元的行为就像它们一样。 也就是说,您需要初始化它们(在对象的构造函数中,最好使用初始化列表)。 http://www.cprogramming.com/tutorial/initialization-lists-c++.html

所有“原始类型”(int,double,float,指针(包括指向char的指针))都是未初始化的,除非它们是静态的。 “原始类型”的数组也是如此。 这意味着它们都可能包含“垃圾值”。

标准库中的std::string类型是(模板化)类类型,在默认构造时,在所有情况下都会初始化为空字符串。

结构和类类型的规则稍微复杂一些,但简单来说,初始化取决于相关构造函数的工作方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM