f0917.cpp

来自「C++程序设计教程(第二版)源代码 钱能编著」· C++ 代码 · 共 40 行

CPP
40
字号
//=====================================
// f0917.cpp
// copy constructor
//=====================================
#include<iostream>
using namespace std;
//-------------------------------------
class Person{
  char* pName;
public:
  Person(char* pN="noName"){
    cout<<"Constructing "<<pN<<"\n";
    pName = new char[strlen(pN)+1];
    if(pName) strcpy(pName,pN);
  }
  Person(const Person& s){
    cout<<"copy Constructing "<<s.pName<<"\n";
    pName = new char[strlen(s.pName)+1];
    if(pName) strcpy(pName, s.pName);
  }
  Person& operator=(Person& s){
    cout<<"Assigning "<<s.pName<<"\n";
    if(this==&s) return s;
    delete[] pName;
    pName = new char[strlen(s.pName)+1];
    if(pName) strcpy(pName,s.pName);
    return *this;
  }
 ~Person(){
    cout <<"Destructing "<<pName<<"\n";
    delete[] pName;
  }
};//-----------------------------------
int main(){
  Person p1("Randy");
  Person p2("Jenny");
  p2 = p1;
}//====================================

 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?