rValue, lValue
1746 ワード
#include <iostream>
using namespace std;
int func1()
{
return 1;
}
int& func2()
{
int x = 2;
return x;
}
class Object
{
public :
Object() { cout << "constr" << endl; }
Object(const Object& other) { cout << "copy constr" << endl; }
~Object() { cout << "destru" << endl; }
};
Object& result()
{
Object a;
return a;
}
//=> 참조를 반환하는 것이지만, 실행 결과를 확인해보면,
// Object obj = result(); 여기서 복사본이 생기는 것을 확인할 수 있음
// 객체의 반환의 경우, 필수적으로 복사를 가지고 옴. : 임시 객체
// rValue는 상수가 아님.
int main()
{
int a = 5;
//func1() = 5;
func2() = 5;
// 임시객체 ? : 컴파일러에 의해 생성되는 객체로,
Object obj = result();
Object obj2;
result() = obj2;
cout << "end" << endl;
}
戻り領域オブジェクトが参照として返されるか、値として返されるか.
一時オブジェクトを作成します.
Rvalue , lValue
:Rvalueの参照のみを受け入れる
2つの参照を使用します.
Rvalue
LValue
参照のタイプ
1.一般参照(LValue)
2. const ref
3. rValue ref
rValue Ref
Reference
この問題について(rValue, lValue), 我々は、より多くの情報をここで見つけました
https://velog.io/@kwt0124/rValue-lValue
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(rValue, lValue), 我々は、より多くの情報をここで見つけました https://velog.io/@kwt0124/rValue-lValueテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol