我知道这是一个相当基本的违规行为,但它是什么?
class xyz
{
void function1()
{
cout<<"in class";
}
};
int main()
{
xyz s1 = new xyz(100);
xyz s2 = s1;
s2.function1();
delete s1;
return 0;
}
使用new
进行内存分配有问题。我相信,但我似乎无法理解它背后的根本和解决方案。
答案 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();