C++中new一个类的指针,有何没有括号有什么区别

error:没有合适的默认构造函数可用 ,一般也是这个问题

括号分为两种,中括号[]或小括号()。
为方便说明,定义指针类型为class test, 指针为
test *ptest;

一、 中括号的情况。
中括号是用来标示申请的是一个对象,还是一组对象。
1 没有中括号时,即ptest = new test; 这时ptest得到的是一个对象*ptest, 释放时使用delete ptest;
2 带有中括号时,在中括号中需要有一个正整数参数。
ptest = new test[N];
N可以是变量,也可以是常量。
这时申请到的ptest指向的空间是N个连续的对象ptest[0],ptest[1]...ptest[N-1],即可以当做一个数组使用。
释放时需要调用delete [] ptest;

二、小括号的情况。
小括号是用来指定初始化参数,用于类指针时,就是指定调用哪个构造函数
1 有小括号时,小括号中可以有若干参数,也可以没有参数。
比如
ptest = new test(); 这样在构造时就会调用无参构造test();
ptest = new test(1); 就会调用构造函数test(int),即一个整型参数的构造函数

2 没有小括号时,默认调用无参构造。

ptest = new test;
和ptest = new test();是一样的。

猜你喜欢

转载自blog.csdn.net/wang13342322203/article/details/80807904
今日推荐