问两个小问题 进来就有分1、C++为什么不能使用这种方式定义类?wxWindow* LoginP,EditP而必须分两行?wxWind
问两个小问题 进来就有分
1、C++为什么不能使用这种方式定义类?
wxWindow* LoginP,EditP;
而必须分两行?
wxWindow* LoginP;
wxWindow* EditP;
2、gcc编译器有没有明确的保证所有指针会初始化为0
比如结构中的指针要自己初始化还是编译器会自动添加?
[解决办法]
wxWindow* LoginP,*EditP;
[解决办法]
自己给结构体写构造函数.
如果结构体简单,就memset去.
[解决办法]
1. 在C里面应该也是一样的
EditP的类型是wxWindow而不是wxWindow*,正确写法是 wxWindow *LoginP, *EditP;
2. 对于gcc编译器不是太清楚,但是应该是初始化是不一定的,从编码规范上来说的话最好是自己初始化一下
[解决办法]
如1楼所说. 你定义的是一个指针和一个对象.
[解决办法]
结构体可以用{0}的方式初始化,编译器自动调用memset
[解决办法]
楼上都是对的,接分:)
[解决办法]
同上..
[解决办法]
wxWindow* LoginP,EditP;
-->
wxWindow* LoginP, *EditP;
[解决办法]
[解决办法]楼上都是对的,接分:)
[解决办法]路过 接分
[解决办法]wxWindow* LoginP,EditP;定义的这两个类型应该是不一样的。第一个定义的是指针,第二个定义的该类型的一个变量。改为:wxWindow* LoginP,*EditP;
gcc编译器没有把每个指针变量初始化都指向0的。
[解决办法]那种写法只能是定义相同的东西,不同的东西那样写表达不了。
类不可能相同,也就没法那么写了。
举例来说定义变量就可以那样写,因为它们除了名字不同之外其它都一样。而类不行,你要几个完全相同的类干啥用?
[解决办法]都说完了,没说的了,接分
[解决办法]洁分了 同意
[解决办法](1)第一行表示定义一个指针和一个对象。如果想定义两个指针需要使用这样的方式:
wxWindow* LoginP, *EditP;
这个*号在c++ primer中有介绍,你可以在适当的情况下多看看书。
(2)我估计gcc没有初始化指针。初始化为0的话要显式初始化。
[解决办法]与基本数据类型一样:
int *p1,ival; //第一个是指针,第二个变量,
wxWindow* LoginP,EditP; //第一个是指针,第二个是对象
[解决办法]1. 你可以 typedef wxWindow* wxWindowPtr;
2. static 变量的初始化是有保障的
[解决办法](1)与基本类型一样,这也是为什么提倡 把 int *a写成int* a.(注意*位置)
因为写成int* a,在定义int* a,b时,会让人误以为是定义int* a;int* b;
写成int *a, b;直观看上去就不会误解了吧。
[解决办法]这个学习了,先顶上!!!