我对下面的代码有疑问,正确地将r值参数传递给C ++中的函数。
为什么我们不能将r值对象Rect
传递给函数Print(Rect&)
,而是将r值int
传递给我们。
我知道我们可以使用Print(const int&)
或Print(int&&)
。但主要的问题是为什么我自己的r值对象可以传递?
提前感谢您的解释。
#include <iostream>
struct Rect{
uint32_t a, b;
Rect(uint32_t a, uint32_t b): a(a), b(b){
std::cout << "Rect constructor..." << std::endl;
}
~Rect(){
std::cout << "Rect destructor..." << std::endl;
}
Rect( const Rect& rhs ): a(rhs.a), b(rhs.b){
std::cout << "Rect copy constructor..." << std::endl;
}
};
void Print(Rect& r){
std::cout << "a = " << r.a << ", b = " << r.b << std::endl;
}
void Print(int& a){
std::cout << "a = " << a << std::endl;
}
int main(){
Print( Rect( 2, 5 ) );
Print( 5 );
return 0;
}