Mic*_*ins 5 c++ pointers object
我知道这可能听起来像一个愚蠢的问题,但为什么我会收到一个错误,上面写着"
无法将Object*转换为Object
"当我尝试使用语句实例化一个新的对象时"
Object obj = new Object();
Run Code Online (Sandbox Code Playgroud)
"?
我是否理解" new "关键字是为指针保留的?或者是别的什么?
And*_*rey 38
Object* obj = new Object();
Run Code Online (Sandbox Code Playgroud)
new 总是返回指向对象的指针.
如果你只是写Object obj它意味着obj将持有对象本身.如果它在函数内部以这种方式声明,则内存将在堆栈上分配,并在离开该函数后将被擦除.new在堆上分配内存,因此可以从函数返回指针.请注意,指针也可以指向本地(堆栈)变量.
因为new返回指针,你应该使用
Object *obj = new Object();
Run Code Online (Sandbox Code Playgroud)
new运算符生成指向对象的指针
那里Object *obj = new Object()应该工作.
但只是Object obj()在堆栈空间中构造对象就好了