Advertisement
Guest User

Untitled

a guest
May 24th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4.  
  5. class String
  6. {
  7. private:
  8. char *s; // char * để lưu chuỗi nhé
  9. int size;
  10. public:
  11. String(const char *str = NULL); // constructor với tham số
  12. ~String() { delete [] s; }// destructor lát nói sau !
  13. String(const String&); // copy constructor
  14. void print() { cout << s << endl; }
  15. void change(const char *);
  16. };
  17.  
  18. String::String(const char *str)
  19. {
  20. size = strlen(str);
  21. s = new char[size+1]; //lưu ý là còn có kí tự "\0" nữa nha
  22. strcpy(s, str); // copy chuỗi phải như thế này, không được s = str đâu
  23. }
  24.  
  25. void String::change(const char *str) // hàm thay đổi chuỗi
  26. {
  27. delete [] s; //xóa luôn, build lại từ đầu
  28. size = strlen(str);
  29. s = new char[size+1];
  30. strcpy(s, str); //hmmmmmm
  31. }
  32.  
  33. String::String(const String& old_str) //định nghĩa copy constructor
  34. {
  35. // hiểu nôm na là gán các nhóm thông tin qua một đối tượng đích
  36. size = old_str.size; //this->size = old_str.size để tường minh hơn
  37. s = new char[size+1];
  38. strcpy(s, old_str.s); //strcpy(this->s, old_str.s)
  39. }
  40.  
  41. int main()
  42. {
  43. String *str1 = new String("Hello Decoding"); // khởi tạo str1
  44. String *str2 = new String(*str1); // khởi tạo str2 thông qua (*str1)
  45.  
  46. str1->print(); // what is printed ?
  47. str2->print();
  48.  
  49. str2->change("Changed"); //thay đổi str2
  50.  
  51. str1->print(); // what is printed now ?
  52. str2->print();
  53. return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement