1 #include <iostream>
2 using namespace std;
3
4 class ClassA
5 {
6 int member;
7
8 public:
9 ClassA (int x):member(x)
10 {
11 cout << "A构造:" <<member <<endl;
12 }
13 //ClassA(const ClassA obj):member(obj.member) //Error!!
14 ClassA(const ClassA& obj):member(obj.member)
15 {
16 cout << "调用复制构造函数" << endl;
17 }
18
19 void showMember(int a)const //const关键字 表示本函数不会数据成员
20 {
21 //member = a; //编译无法通过,因为尝试修改数据成员
22 cout << "不修改成员" << endl;
23 }
24
25 friend ClassA Add(const ClassA a, const ClassA& b);
26 };
27
28 //习惯使用引用来避免参数复制,提高效率 ,使用const避免修改
29 ClassA Add(const ClassA a, const ClassA& b)
30 {
31 return ClassA(a.member + b.member);
32 }
33
34 int main(int argc, char *argv[])
35 {
36 ClassA a(10), b(20);
37 Add(a, b); //自动调用构造函数输出结果
38
39 ClassA c = a; //调用复制构造函数
40 return 0;
41 }