C++是有面向对像的特性,但有些概念还是容易让人迷糊的:
#include <iostream> #define log(x) std::cout<<x; extern void Log(const char* p); /* 一个类 */ class A{ private: int i; public: void f(){ i=20; log(i); // test //log(this); } int x; }; /* 主mian */ int main(int argc, char** argv) { A a; // 一个对像 a.x = 36; // 设一个值 A b(a); // 调用拷贝函数 log("b:"); log(b.x); // a的数据被拷贝到b了 A c; c = a; // 调用赋值函数 log("\nc:"); log(c.x); // a的数据也赋值到C了 log("\n== end =="); }
所以,其实本质就是赋值,它不是int 也不是char,它是class类的对像。
A(const A & obj) 这是拷贝函数;A是类,obj是类所创造的对像
A& operator = (const A& obj);这是赋值函数;