作者:乐在hhh其中 | 来源:互联网 | 2023-10-11 07:16
结构体是这样的:
typedef struct {
unsigned int id;
unsigned char data[8];
unsigned int dlc;
unsigned int flags;
}Gemfield, *PGemfield;
然后使用的时候:
Gemfield *gemfield;
gemfield=new Gemfield;
gemfield->id=0x1;
编译结果先不说了,防止误导各位的思维。
第一个问题:这样可以吗?简述理由。
第二个问题:达到同样的目的,有没有更好的方法?
34 个解决方案
当然可以,
C++中结构体和类的唯一区别就是默认访问权限不同,你可以用类啊
把struct当做class就是了,就是成员的默认访问权限等不太一样
当然是可以的 你就把你的结构当作一个变量来就行了 例如 你可以把WORD 想象成为两个BYTE的结构 WORD也可new 对不对。
Gemfield gemfield;
gemfield.id=0x1;
不用 new 也可以这样
1.这样可以,new是用来申请空间的.除new以外,还可以用malloc.
gemfield = (PGemfield)malloc(sizeof(Gemfield));
或者 gemfield = new Gemfield;
可以,可以想象结构体是个类名A。
A a ,
A *p = new A();
这样就清楚多了。
加括号调用没有参数的构造函数,不加括号调用默认构造函数或唯一的构造函数
不是括号的问题吧,编译器不是只生成一个默认构造吗?就是无参构造。
加不加括号好像是有区别的,在c++ primer第四版里看到过,刚找了下没找到。
加括号是采用值初始化,c++ primer 第四版 151页。
现在看是没啥区别,但程序运行的结果就是不一样。就当做Qt4.3库的bug吧