练习13.22
1 #include <iostream> 2 #include <string> 3 #include <memory> 4 5 using namespace std; 6 7 8 class HasPtr { 9 friend ostream &print(ostream &os, HasPtr &h); 10 public: 11 HasPtr(const string &s = string()) : ps(s), i(0) {} 12 HasPtr(const HasPtr &ptr); 13 HasPtr &operator=(const HasPtr &pt); 14 ~HasPtr() { } 15 private: 16 string ps; 17 int i; 18 }; 19 20 ostream &print(ostream &os, HasPtr &h); 21 22 int main() 23 { 24 HasPtr has("hello"); 25 HasPtr have = has; 26 print(cout, have); 27 system("pause"); 28 return 0; 29 } 30 31 HasPtr::HasPtr(const HasPtr & ptr) : ps(ptr.ps), i(ptr.i) {} 32 33 HasPtr & HasPtr::operator=(const HasPtr & pt) 34 { 35 ps = pt.ps; 36 i = pt.i; 37 return *this; 38 // TODO: 在此处插入 return 语句 39 } 40 41 ostream & print(ostream & os, HasPtr & h) 42 { 43 os << h.ps << h.i << endl; 44 return os; 45 // TODO: 在此处插入 return 语句 46 }
上述的是具有类值行为,以前做的练习是具有类指针行为;