高手来看一下。
下面代码中的 X f5() 怎么理解?
#include <iostream.h>
class X {
int i;
public:
X(int ii = 0);
~X();
void modify();
void print(char* s) {cout<<s<<i<<endl;}
};
X::X(int ii) { i = ii; print("Initialize ");}
X::~X() {print("Destory");}
void X::modify() { i++; print("Modify ");}
X f5() {
return X();
}
const X f6() {
return X();
}
void f7(X& x) { // Pass by non-const reference
x.modify();
}
void main() {
f5() = X(1); // OK -- non-const return value
f5().modify(); // OK
// Causes compile-time errors:
//! f7(f5());
//! f6() = X(1);
//! f6().modify();
//! f7(f6());
} ///:~