Jay*_*ark 0 c++ crash runtime-error pass-by-value
我知道C,但我不擅长C++.
以下代码将崩溃(在getval()中,使用引用作为参数是ok).并且*p在第一次cout陈述之后改变了价值.看起来存在一些超出内存的覆盖.
我的问题是它崩溃的原因(或者为什么它的价值发生了变化).这是对象的"按价值呼叫",所以它应该工作吗?
class myclass {
int *p;
public:
myclass(int i);
~myclass() { delete p; }
int getval(myclass o);
};
myclass::myclass(int i)
{
p = new int;
if (!p) {
cout << "Allocation error\n";
exit(1);
}
*p = i;
}
int myclass::getval(myclass o)
{
return *o.p;
}
int main()
{
myclass a(1), b(2);
cout << a.getval(a) << " " << a.getval(b) << endl;
cout << b.getval(a) << " " << b.getval(b) << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
225 次 |
| 最近记录: |