把用new创办的对象取值之后赋值给一个引用合适么
把用new创建的对象取值之后赋值给一个引用合适么?#include iostreamusing namespace stdint main(){int
把用new创建的对象取值之后赋值给一个引用合适么?
#include <iostream>
using namespace std;
int main()
{
int& a = *(new int(3));
cout << a << endl;
return 0;
}
这个是可以编译通过的,结果也是对的。
少用指针的说法我已经听得太多了。那么用new创建的对象有必要赋值给一个引用么?在实际的工程中有这么用的么?感觉这样的话至少可以少打几个字符(从->变成.),但是可能不容易看出这个对象是通过new得到的,毕竟直接定义的对象一般可能不会需要->。
[解决办法]没有这么用的,太容易泄漏
[解决办法]int& a = *(new int(3)); 这样的写法在项目中要被骂娘,你的内存要是泄露了,哭死你。
[解决办法]你这个例子本身就内存泄露了。
引用的目的是什么?无非是想避免创建临时变量。
你用new已经创建了实例,使用指针岂不更好。
另外:Qt推荐用指针,而不是引用。
[解决办法]4L,怎么可能会崩掉呢,这种才是合法的做法。
[解决办法]两种都是可以,都是动态删掉该内存,一般没人去这样做,都是采用指针的形式。
[解决办法]你这是release版吗?用Release版运行一遍。
Debug版中delete a可能会做一些多余的事,以便于发现“释放后使用”的错误。
[解决办法]我上面只是说释放的方式,你后面的那个指针在输出数据,你这是使用了野指针,导致未定义的结果
[解决办法]编译器是什么?
我这里没有这种现象。