August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
你可能已经注意到了,我们通常不对string、vector等对象进行初始化。例如:
这并不是“变量必须先初始化再使用”这条规则的例外情况。之所以出现这种情况,是因为我们定义string类型和vector类型时定义了默认初始化机制,如果代码中不显式进行初始化,这两种对象就会被用一个默认值进行初始化。因此,上述代码执行到循环时,v的值为空(不包含任何元素),s的值为空串("")。保证默认初始化的机制称为默认构造函数,参见9.7.3节。
不幸的是,C++不允许我们对内置类型设置默认初始化功能。全局变量会被默认初始化为0,但你应该尽量少用全局变量。而最常使用的变量——局部变量和类成员——是不会被初始化的,除非你对其进行初始化(或提供一个默认构造函数)。我们已经提示过你了,你在实践中一定要注意!