为什么新操作员会在这里抛出错误?

时间:2013-11-21 06:51:47

标签: c++ object constructor new-operator heap-memory

class-name object-name = new constructor-name()抛出错误(代码第16行) 从这个我可以推断出新的返回指针,我的结论是正确的吗?此外,如果新的不起作用,这是否意味着对象someObject在堆栈上分配而不是堆?如果我想在堆上创建一个对象怎么办?

#include<iostream>
using namespace std;
class someClass
{
        public:
                int x;
                someClass()
                {
                        x=6;
                }
};
int main()
{
        someClass someObject;
        someClass *pointerObject;
        someObject = new someClass(); //This line throws error
        pointerObject = new someClass();
        cout<<someObject.x<<endl<<pointerObject->x;
        return 0;
}

p.s:我知道这个问题很模糊,但我无法用更好的语言表达,对于造成的不便,我深表歉意。

2 个答案:

答案 0 :(得分:3)

因为new返回pointer,您尝试将其分配给对象。 C ++不是C#!

答案 1 :(得分:0)

main

的第一行
someClass someObject;

已经被称为没有参数的默认构造函数。 new函数返回指向对象的指针,然后尝试将指针指定给对象。

您可以查看here对象和指针的一些解释。