mirror of
https://github.com/Light-City/CPlusPlusThings.git
synced 2026-02-06 12:04:22 +08:00
support bazel complie this project and format code.
This commit is contained in:
46
learn_class/modern_cpp_30/obj/obj2.cpp
Normal file
46
learn_class/modern_cpp_30/obj/obj2.cpp
Normal file
@@ -0,0 +1,46 @@
|
||||
//
|
||||
// Created by light on 19-12-22.
|
||||
//
|
||||
|
||||
// nrvo example
|
||||
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
// Can copy and move
|
||||
class A {
|
||||
public:
|
||||
A() { cout << "Create A\n"; }
|
||||
|
||||
~A() { cout << "Destroy A\n"; }
|
||||
|
||||
A(const A &) { cout << "Copy A\n"; }
|
||||
|
||||
A(A &&) { cout << "Move A\n"; }
|
||||
|
||||
A &operator=(const A &a) {
|
||||
std::cout << "copy assignment" << std::endl;
|
||||
return *this;
|
||||
}
|
||||
|
||||
A &operator=(A &&a) {
|
||||
cout << "move assignment\n";
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
// 编译器可以优化 返回值移动出去
|
||||
A getA_named() {
|
||||
A a;
|
||||
return a;
|
||||
}
|
||||
|
||||
int main() {
|
||||
// cout<<"拷贝"<<endl;
|
||||
// auto a = getA_named();
|
||||
|
||||
cout << "赋值" << endl;
|
||||
A aa;
|
||||
aa = getA_named();
|
||||
}
|
||||
Reference in New Issue
Block a user