以下代码段有什么问题?

时间:2016-10-08 16:56:09

标签: c++ class compiler-errors code-snippets object-oriented-analysis

我知道这是一个相当基本的违规行为,但它是什么?

class xyz
{
    void function1()
    {
        cout<<"in class";
    }
};

int main()
{
    xyz s1 = new xyz(100);
    xyz s2 = s1;
    s2.function1();
    delete s1;
    return 0;
}

使用new进行内存分配有问题。我相信,但我似乎无法理解它背后的根本和解决方案。

2 个答案:

答案 0 :(得分:4)

您无法将This is the 'div' text that I want to print. 分配给T*(除了病理情况)。

T

更好的是,不要使用裸xyz * s1 = new xyz(); xyz * s2 = s1; s2->function1(); delete s1; return 0; new并使用智能指针:

delete

答案 1 :(得分:2)

new将指针(xyz *)返回给对象,而不是对象,因此您应该更正s1的类型:

xyz* s1=new xyz(100);

要通过指针调用方法,您应该使用operator ->

s1->function1();

相当于取消引用指针并在对象上调用方法:

(*s1).function1();