动态分配数组时,如果数组元素具有类类型,将使用该类的默认构造函数实现初始化;如果数组元素是内置类型,则无初始化。 可以跟在数组后面加一对空圆括号,对数组元素进行初始化。 int *pia2=new int [10](); 圆括号要求编译器对数组初始化,这里把数组元素都设置为0。//对于这里在VC 6.0下测试,输出为一个很大的负数,VS 2010中输出10个0,对此鸭梨很大。 PS:对于动态分配数组,其元素只能初始化为元素类型的默认值,而不能像数组变量一样,用初始化列表为数组元素提供各不相同的初值。
另外C++种允许动态分配空数组 char arr[0];//错 char *cp=new char [0];//正确,但是不能解引用,因为它没指向任何元素。
这里补充一点: const char *str=st2.c_str();//st2
是string类型 |
|