본문 바로가기

C

c++ copy elison, Retrun value optimization

보통은 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