c++中有关空间分配的一个小问题,看c++编程思想时有些没看明白.
c++编程思想中的那个4.3.2节没有看懂.说的是空间分配,它说编译器甚至会检查我们有没有把一个对象的定义放到一个条件块中,比如在switch块中声明,或可能被goto跳过的地方.它给出的例子是:
//解除注释的句子会导致一个警告或一个错误.
//: C06:Nojump.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
// Can't jump past constructors
class X {
public:
X();
};
X::X() {}
void f(int i) {
if(i < 10) {
//! goto jump1; // Error: goto bypasses init
}
X x1; // Constructor called here
jump1:
switch(i) {
case 1 :
X x2; // Constructor called here
break;
//! case 2 : // Error: case bypasses init
X x3; // Constructor called here
break;
}
}
int main() {
f(9);
f(11);
}///:~
这个例子到底说明了什么问题,我看了之后感觉很模糊.能不能说得再详细一些?谢谢.