File tree Expand file tree Collapse file tree 4 files changed +119
-0
lines changed Expand file tree Collapse file tree 4 files changed +119
-0
lines changed Original file line number Diff line number Diff line change
1
+ all :RVO NRVO
2
+ RVO : rvo.cpp
3
+ g++ rvo.cpp -std=c++11 -o $@
4
+ NRVO : nrvo.cpp
5
+ g++ nrvo.cpp -std=c++11 -o $@
6
+
7
+ run :
8
+ ./RVO
9
+ @echo -e " +++++++++++++++++++++++++++++++++++\n\n"
10
+ ./NRVO
11
+
12
+ clean :
13
+ rm -rf RVO NRVO
Original file line number Diff line number Diff line change
1
+ #include " object.h"
2
+
3
+ int main ()
4
+ {
5
+ {
6
+ std::cout << " ==============================\n " ;
7
+ auto obj1 = getTestWithName ();
8
+ std::cout << " ===========================\n " ;
9
+ }
10
+
11
+ {
12
+ std::cout << " \n ===========================\n " ;
13
+ auto obj2 = std::move (getTestWithName ());
14
+ std::cout << " ===========================\n " ;
15
+ }
16
+
17
+ {
18
+ std::cout << " \n ===========================\n " ;
19
+ Test obj3; obj3 = getTestWithName ();
20
+ std::cout << " ===========================\n " ;
21
+ }
22
+
23
+ {
24
+ std::cout << " \n ===========================\n " ;
25
+ Test obj4; obj4 = std::move (getTestWithName ());
26
+ std::cout << " ===========================\n " ;
27
+ }
28
+ }
Original file line number Diff line number Diff line change
1
+ #include < iostream>
2
+ #include < vector>
3
+ #include < string>
4
+
5
+ struct Test {
6
+ Test ()
7
+ {
8
+ std::cout << " Construct function" << std::endl;
9
+ }
10
+
11
+ Test (const Test&)
12
+ {
13
+ std::cout << " Copy construct function" << std::endl;
14
+ }
15
+
16
+ Test& operator =(const Test&)
17
+ {
18
+ std::cout << " Copy assignment function" << std::endl;
19
+ return *this ;
20
+ }
21
+
22
+
23
+ Test (Test&&)
24
+ {
25
+ std::cout << " Move construct function" << std::endl;
26
+ }
27
+
28
+
29
+ Test& operator =(Test &&t)
30
+ {
31
+ std::cout << " Move assignment Function" << std::endl;
32
+ return *this ;
33
+ }
34
+
35
+ ~Test ()
36
+ {
37
+ std::cout << " Destruct function" << std::endl;
38
+ }
39
+ };
40
+
41
+ Test getTest ()
42
+ {
43
+ return Test ();
44
+ }
45
+
46
+ Test getTestWithName ()
47
+ {
48
+ Test temp;
49
+ return temp;
50
+ }
Original file line number Diff line number Diff line change
1
+ #include " object.h"
2
+
3
+ int main ()
4
+ {
5
+ {
6
+ std::cout << " ==============obj1 = getTest()================\n " ;
7
+ auto obj1 = getTest ();
8
+ std::cout << " ===========================\n " ;
9
+ }
10
+
11
+ {
12
+ std::cout << " \n =============obj2 = std::move(getTest())==============\n " ;
13
+ auto obj2 = std::move (getTest ());
14
+ std::cout << " ===========================\n " ;
15
+ }
16
+
17
+ {
18
+ std::cout << " \n ===========================\n " ;
19
+ Test obj3; obj3 = getTest ();
20
+ std::cout << " ===========================\n " ;
21
+ }
22
+
23
+ {
24
+ std::cout << " \n ===========================\n " ;
25
+ Test obj4; obj4 = std::move (getTest ());
26
+ std::cout << " ===========================\n " ;
27
+ }
28
+ }
You can’t perform that action at this time.
0 commit comments