#include <iostream>
using namespace std;
struct Node{
int u, v;
Node(){u = v = 3;}
Node(int u, int v){
u = u, v = v;
}
};
int main(){
Node n(1, 2);
printf("%d %d/n", n.u, n.v);
system("pause");
return 0;
}
很奇怪,没有编译错误甚至警告,问了几个人才恍然大悟,u,v在这种情况下也屏蔽了成员u,v导致初始化不确定,因此相当于成员,u,v都没有被初始化,输出结果不定。
TC++PL书上说只有static const int类型才可以在类中初始化,竟然在DEV中其他类型入float,double都可以初始化,但是在VS2008中却编译错误。
书上没解释,网上也看到什么解释,我也没想通为什么设计语言的时候要这个限制,莫非int型在编译的时候不好实现?。 有了解的路过发表下看法吧,3KS。