-1
class MyClass
{
public:
int x=0;
};
void doSomething(MyClass obj)
{
obj.x=1;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
MyClass obj;
doSomething(obj);
qDebug()<< "x is " << obj.x;
return a.exec();
}
我知道如果我在这里传递指针,x
将是1
,我的问题是obj.x=1
中发生了什么;声明在这里?为什么x 0在这里,x = 1语句中发生了什么?
它正在修改复制的对象。基本上是不操作的,因为该对象立即超出范围。 – AndyG
@AndyG我不会称它为临时的,它有一个名字。 – Angew
@Angew:编辑的正确性 – AndyG