Advertisement
Guest User

Untitled

a guest
Apr 19th, 2015
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. double a = 8.1;
  2. double && b = 3.2;
  3. double && c = 3*a-4;
  4. double && d = func(c);
  5.  
  6. double c = 3*a-4;
  7.  
  8. double a = 8.1; // переменная типа double
  9. double && b = 3.2; // rvalue-ссылка на временный объект
  10. double && c = 3*a-4; // rvalue-ссылка на временный объект
  11. double && d = func(c); // rvalue-ссылка на временный объект
  12.  
  13. #include <iostream>
  14.  
  15. class A
  16. {
  17. public:
  18. A() = default;
  19. A(const A& other)
  20. {
  21. std::cout << "Copy ctorn";
  22. }
  23.  
  24. A(A&& other)
  25. {
  26. std::cout << "Move ctorn";
  27. }
  28. };
  29.  
  30. void first(A a)
  31. {
  32. //...
  33. }
  34.  
  35. void second(A&& a)
  36. {
  37. //...
  38. }
  39.  
  40.  
  41. int main()
  42. {
  43. first(A{});
  44. std::cout << "Let's call the second:n";
  45. second(A{});
  46. return 0;
  47. }
  48.  
  49. Move ctor
  50. Let's call the second:
  51.  
  52. #include <iostream>
  53.  
  54. class A
  55. {
  56. public:
  57. A() = default;
  58. void setName(const std::string& name)
  59. {
  60. std::cout << "Called setName with lvalue.n";
  61. m_Name = name;
  62. }
  63.  
  64. void setName(std::string&& name)
  65. {
  66. std::cout << "Called setName with rvalue.n";
  67. m_Name = std::move(name);
  68. }
  69. private:
  70. std::string m_Name;
  71. };
  72.  
  73. int main()
  74. {
  75. A a;
  76. std::string name{"another name"};
  77. a.setName("New name");//№1
  78. a.setName(name);//№2
  79. return 0;
  80. }
  81.  
  82. Called setName with rvalue.
  83. Called setName with lvalue.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement