Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- double a = 8.1;
- double && b = 3.2;
- double && c = 3*a-4;
- double && d = func(c);
- double c = 3*a-4;
- double a = 8.1; // переменная типа double
- double && b = 3.2; // rvalue-ссылка на временный объект
- double && c = 3*a-4; // rvalue-ссылка на временный объект
- double && d = func(c); // rvalue-ссылка на временный объект
- #include <iostream>
- class A
- {
- public:
- A() = default;
- A(const A& other)
- {
- std::cout << "Copy ctorn";
- }
- A(A&& other)
- {
- std::cout << "Move ctorn";
- }
- };
- void first(A a)
- {
- //...
- }
- void second(A&& a)
- {
- //...
- }
- int main()
- {
- first(A{});
- std::cout << "Let's call the second:n";
- second(A{});
- return 0;
- }
- Move ctor
- Let's call the second:
- #include <iostream>
- class A
- {
- public:
- A() = default;
- void setName(const std::string& name)
- {
- std::cout << "Called setName with lvalue.n";
- m_Name = name;
- }
- void setName(std::string&& name)
- {
- std::cout << "Called setName with rvalue.n";
- m_Name = std::move(name);
- }
- private:
- std::string m_Name;
- };
- int main()
- {
- A a;
- std::string name{"another name"};
- a.setName("New name");//№1
- a.setName(name);//№2
- return 0;
- }
- Called setName with rvalue.
- Called setName with lvalue.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement