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 }