读书人

问两个小疑点 进来就有分

发布时间: 2012-04-05 12:42:40 作者: rapoo

问两个小问题 进来就有分
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;

[解决办法]

探讨
1、C++为什么不能使用这种方式定义类?
wxWindow* LoginP,EditP;
而必须分两行?
wxWindow* LoginP;
wxWindow* EditP;

2、gcc编译器有没有明确的保证所有指针会初始化为0
比如结构中的指针要自己初始化还是编译器会自动添加?

[解决办法]
楼上都是对的,接分:)
[解决办法]
路过 接分

[解决办法]
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;直观看上去就不会误解了吧。

[解决办法]
这个学习了,先顶上!!!

读书人网 >C++

热点推荐