copy构造函数(拷贝构造函数)

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 }
原文地址:https://www.cnblogs.com/jswu-ustc/p/8329654.html