fork download
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. class ByteBuffer final
  6. {
  7. private:
  8. char* buffer;
  9. size_t size;
  10. public:
  11. size_t GetSize() const
  12. {
  13. return size;
  14. }
  15. const char* GetBuffer() const
  16. {
  17. return buffer;
  18. }
  19. char* GetBuffer()
  20. {
  21. return buffer;
  22. }
  23. ByteBuffer(size_t dataSize)
  24. {
  25. cout<<"uc";
  26. buffer=new char[dataSize];
  27. size=dataSize;
  28. }
  29. ByteBuffer(ByteBuffer& a){
  30. cout<<"cc";
  31. buffer=new char[a.size];
  32. memcpy(buffer,a.buffer,a.size);
  33. size=a.size;
  34. }
  35. ByteBuffer(ByteBuffer&& a)
  36. {
  37. cout<<"mc";
  38. buffer=a.buffer;
  39. a.buffer=nullptr;
  40. size=a.size;
  41. a.size=0;
  42. }
  43. ~ByteBuffer() {
  44. cout<<"de";
  45. delete[] buffer;
  46. }
  47. ByteBuffer & operator = (ByteBuffer &a)
  48. {
  49. cout<<"ca";
  50. delete[] buffer;
  51. buffer=new char[a.size];
  52. memcpy(buffer,a.buffer,a.size);
  53. size=a.size;
  54. return *this;
  55. }
  56. ByteBuffer & operator = (ByteBuffer &&a)
  57. {
  58. cout<<"ma";
  59. delete[] buffer;
  60. buffer=a.buffer;
  61. a.buffer=nullptr;
  62. size=a.size;
  63. a.size=0;
  64. return *this;
  65. }
  66. };
  67.  
  68. ByteBuffer func ()
  69. {
  70. return ByteBuffer(50);
  71. }
  72.  
  73. int main()
  74. {
  75. ByteBuffer a(50);
  76. ByteBuffer b(50);
  77. cout<<"*";
  78. b = func();
  79. return 0;
  80. }
Success #stdin #stdout 0s 3412KB
stdin
Standard input is empty
stdout
ucuc*ucmadedede