C++的new能不能结果直接交给引用
C++的new能不能结果直接付给引用
如下面的代码, new A(1)可以直接赋值给指针a1,但是赋给引用a2的时候需要先解引用一下
我想,new能不能更智能一些,让编译器根据变量的类型决定是直接返回指针还是返回指针的解引用,这样就可以直接
A & a2 = new A(1);
虽然只是一个很小的改动,但是却可以让引用的更容易使用,减少指针的使用,从而提高C++的易用性
而且这个更改只是语法上的一个小trick,类似于C++11中的auto,并不会引入复杂度或难以排查的错误。。。
各位大侠以为这样做有意义吗??
------解决方案--------------------
不能这样做,内存泄漏
------解决方案--------------------
优先考虑智能指针
如下面的代码, new A(1)可以直接赋值给指针a1,但是赋给引用a2的时候需要先解引用一下
我想,new能不能更智能一些,让编译器根据变量的类型决定是直接返回指针还是返回指针的解引用,这样就可以直接
A & a2 = new A(1);
虽然只是一个很小的改动,但是却可以让引用的更容易使用,减少指针的使用,从而提高C++的易用性
而且这个更改只是语法上的一个小trick,类似于C++11中的auto,并不会引入复杂度或难以排查的错误。。。
各位大侠以为这样做有意义吗??
#include <cstdio>
class A
{
public:
A(int a){_A = a;}
int _A;
};
int main()
{
A * a1 = new A(1);
A & a2 = * new A(1); //等价于A * x = new A(1); A & a2 = *x;
printf("a1:%d\n",a1->_A);
printf("a2:%d\n",a2._A);
}
------解决方案--------------------
不能这样做,内存泄漏
------解决方案--------------------
优先考虑智能指针