在C++中,{...}这种形式不是结构的常数形式,而是初始化的一种写法。这种写法只能用于初始化。
虽然赋值和初始化在C++里面可以用=,但是语法上有差异。
这样写可以:
CandyBar cb = {"hi", 0.5, 1};
这样写就不行:
CandyBar cb;
cb = {"hi", 0.5, 1};
因为前者是初始化,后者是赋值。
语法就是这样规定的。可能最初规定的时候应该是有原因的,但现在已经不可考。
你搞错了,ps指的是一个地址,那么*ps指的是地址的值,注意啦:ps[0]指的是ps首地址指的值,而不是一个地址,明白这句话了很自然就可以理解,为什么*(ps[0])不能赋值了。
字符串类型的赋值要用strcpy,
例如strcpy(brand," ")
不过要加上#include
CandyBar *ps = new CandyBar [3]; 定义方法不对