这是一个例子:
while (i < 10)
{
int j = 1;
string k = "hello.";
}
j 是原始数据类型,k 是对象。根据Do built-in types have default constructors? ,
所以非类类型(包括基本类型、数组类型、引用类型、指针类型和枚举类型)没有构造函数。
根据在循环中声明变量,好的做法还是坏的做法?(2 部分) ,
对于对象(例如 std::string),必须在每次迭代时执行构造函数和析构函数。
while(i--) { int i=100; // gets created every time the loop is entered i--; printf("%d..",i); } // the i in the loop keeps getting destroyed here
我了解到,当调用函数时(例如main()
由操作系统调用),所有局部变量都在函数开始时创建并在函数结束时销毁。上面的while循环引用是说原始数据类型i
是在while循环块中声明时创建的,并在每次迭代的while循环块结束时销毁。
这是真的吗?#1是否为 while 循环的每次迭代分配了在 while 循环块中声明的原始数据类型?#2我是否错误地认为应该在包含 while 循环块的函数的开头创建 while 循环中的这些声明?
我正在寻找详细的解释,而不仅仅是是或否。