Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Итоги
- // В некоторых случаях компилятор опускает перемещение и копирование:
- // - Возврат из функции временного объекта (copy elision)
- // - Инициализация временным объектом (copy elision)
- // - Возврат из функции локальной переменной (NRVO)
- #include <iostream>
- using namespace std;
- class Logger
- {
- public:
- Logger() { cout<<"Default ctor\n";}
- Logger(const Logger&) { cout<<"Copy ctor\n";}
- Logger(Logger&&) { cout<<"Move ctor\n";}
- };
- Logger MakeLogger(){
- //copy elision
- return Logger(); // return temporary
- }
- Logger MakeLogger2(){
- Logger logger;
- // ...
- // named return value optimization
- return logger; // return local variable
- }
- int main()
- {
- //copy elision
- Logger logger = MakeLogger(); // initialize with temporary
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement