<分区>
考虑以下代码:
class Base {
public:
int bi;
Base() : bi(100) {std::cout << "\nBase default constructor ...";}
Base(int i) : bi(i) {std::cout << "\nBase int constructor: "<< bi;}
Base(const Base& b) {std::cout << "\nBase copy constructor";}
Base(Base&& b) {std::cout << "\nBase move constructor";}
};
Base getBase() {
cout << "\nIn getBase()";
return Base();
}
int main() {
Base b2(getBase());
Base b3 = Base(2);
Base b4 = getBase();
}
尽管给出了右值,但 main 中的上述构造都没有调用移动构造函数。有没有办法确保调用用户定义的移动构造函数?
这是我得到的:
In getBase()
Base default constructor ...
Base int constructor: 2
In getBase()
Base default constructor ...
Base destructor: 100
Base destructor: 2
Base destructor: 100