C++里面初始化一个对象的时候需要调用构造函数,而用一个对象去初始化另外一个对象的时候则是调用拷贝构造函数。
拷贝构造函数的作用:用一个对象来初始化另外一个对象(注意:初始化和赋值是两种完全不同的操作)
1 //myteacher.h文件 2 #pragma once 3 class myteacher 4 { 5 public: 6 myteacher(void); 7 myteacher(const myteacher&); 8 myteacher(int a,const char* n); 9 ~myteacher(void); 10 void printT(void); 11 12 private: 13 int age; 14 char name[32]; 15 }; 16 17 18 //myteacher.cpp文件 19 #include "myteacher.h" 20 #include <string.h> 21 #include <iostream> 22 23 //不带参的构造函数 24 myteacher::myteacher(void) 25 { 26 age=18; 27 strcpy(name,"Li"); 28 } 29 //带参的构造函数 30 myteacher::myteacher(int a,const char* n) 31 { 32 age=a; 33 strcpy(name,n); 34 } 35 //copy构造函数(拷贝构造函数) 36 myteacher::myteacher(const myteacher& T) 37 { 38 age=T.age; 39 strcpy(name,T.name); 40 } 41 42 void myteacher::printT() 43 { 44 std::cout<<age<<std::endl; 45 std::cout<<name<<std::endl; 46 } 47 48 49 myteacher::~myteacher(void) 50 { 51 } 52 53 54 //main函数文件 55 #include<iostream> 56 #include "myteacher.h" 57 58 using namespace std; 59 60 int main() 61 { 62 myteacher t1(25,"Wu");//调用构造函数,用指定的参数初始化t1 63 64 myteacher t2;//调用构造函数,用默认的参数初始化t1 65 t2=t1; //赋值操作,不调用任何构造函数(拷贝构造函数也属于构造函数) 66 67 myteacher t3(t1);//调用拷贝构造函数,用t1的参数去初始化t3 68 69 system("pause"); 70 return 0; 71 }