//
// 3.4.cpp
// c++1x tutorial
//
// created by changkun at changkun.de
//
// ç§»å¨è¯ä¹
#include
class A {
public:
int *pointer;
A():pointer(new int(1)) {
std::cout << "æé " << pointer << std::endl;
}
A(A& a):pointer(new int(*a.pointer)) {
std::cout << "æ·è´" << pointer << std::endl;
} // æ æä¹ç对象æ·è´
A(A&& a):pointer(a.pointer) {
a.pointer = nullptr;
std::cout << "ç§»å¨" << pointer << std::endl;
}
~A(){
std::cout << "ææ" << pointer << std::endl;
delete pointer;
}
};
// 鲿¢ç¼è¯å¨ä¼å
A return_rvalue(bool test) {
A a,b;
if(test) return a; // çä»·äº static_cast(a);
else return b; // çä»·äº static_cast(b);
}
int main() {
A obj = return_rvalue(false);
std::cout << "obj:" << std::endl;
std::cout << obj.pointer << std::endl;
std::cout << *obj.pointer << std::endl;
return 0;
}