结构体也是类,所以也要用new来产生实例的呀,只不过用new分配时的位置不同罢了

解决方案 »

  1.   

    1) b strBOOK;  只是为strBOOK分配内存,不负责该内存空间的初始化清零。
    2) b strBOOK=new b(); 不仅为strBOOK分配内存,而且为其内存空间清零。在valuetype初始化之前,不能调用它的成员方法,也不能读它的成员变量。所以前一种写法不能通过编译。但是除了2)的初始化以外,你也可以选择手工初始化所有的类成员,效果是一样的:
      
    b strBOOK;
    strBOOK.x = 5; //假设x是public
    strBOOK.read (4); //不会出错了
      

  2.   

    结构体如果不用New初始化,也可以,但是在其使用前必须手动初始化他的每一个成员,否则编译器将报错。用New初始化,可自动将其中的每一个成员都置为零值。