f0917.cpp
Upload User: puke2000
Upload Date: 2022-07-25
Package Size: 912k
Code Size: 1k
Category:

CSharp

Development Platform:

Visual C++

  1. //=====================================
  2. // f0917.cpp
  3. // copy constructor
  4. //=====================================
  5. #include<iostream>
  6. using namespace std;
  7. //-------------------------------------
  8. class Person{
  9.   char* pName;
  10. public:
  11.   Person(char* pN="noName"){
  12.     cout<<"Constructing "<<pN<<"n";
  13.     pName = new char[strlen(pN)+1];
  14.     if(pName) strcpy(pName,pN);
  15.   }
  16.   Person(const Person& s){
  17.     cout<<"copy Constructing "<<s.pName<<"n";
  18.     pName = new char[strlen(s.pName)+1];
  19.     if(pName) strcpy(pName, s.pName);
  20.   }
  21.   Person& operator=(Person& s){
  22.     cout<<"Assigning "<<s.pName<<"n";
  23.     if(this==&s) return s;
  24.     delete[] pName;
  25.     pName = new char[strlen(s.pName)+1];
  26.     if(pName) strcpy(pName,s.pName);
  27.     return *this;
  28.   }
  29.  ~Person(){
  30.     cout <<"Destructing "<<pName<<"n";
  31.     delete[] pName;
  32.   }
  33. };//-----------------------------------
  34. int main(){
  35.   Person p1("Randy");
  36.   Person p2("Jenny");
  37.   p2 = p1;
  38. }//====================================
  39.