보통은 l value reference로 인자를 보내주면 충분하다
그리고 함수에 인자는 pass by value
object의 인자는 pass by reference가 좋다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
// RVO
// COPY ELISON
#include <string>
#include <iostream>
std::string getString()
{
// RVO 개입
std::string s = "nocodeprogram";
return s;
}
std::string getString(std::string a, bool b)
{
if (b)
{
a = "nocodeprogram";
return a;
}
return a;
}
int main()
{
std::string a = getString(); //RVO 개입, zerocopy, zeromove 성립
std::string a1 = getString("nocodeprogramming", true); // move constructor 발생, copy 안 일어남
return 0;
}
|
'C' 카테고리의 다른 글
static function, static variable (0) | 2021.06.23 |
---|---|
c++ object memory alignment (0) | 2021.06.23 |
c++ lvalue rvalue zero copy (0) | 2021.06.23 |
c++ heap memory space (0) | 2021.06.22 |
c++ stack 공간, class, struct, 타입별 메모리 사이즈 (0) | 2021.06.22 |