1. C++基本对象的组成
尽管C++社区最近十年兴起元编程范式和模板技术,面向对象编程仍是C++语言最基础,也是最重要的一种编程范式(paradigms)。C++的对象,将过程式的数据结构,以及操作在它们之上的函数,绑定到一个单一的语法单元,那就是类(class)。C++世界里,活生生的个体联系就是所有类的对象所进行的消息传递,对象协作而构成千变万化的世界。但对象的内部结构,对象的产生和消亡,数据成员和函数成员的结构,困扰了无数初学者。
C++基本对象由以下几方面元素组成:
对象数据成员(非静态数据成员)
类数据成员(静态数据成员)
函数成员
静态函数成员
这里,我们不考虑类的单继承,多重继承以及虚函数等复杂的特性。
下面我们对C++基本对象进行抽丝剥茧,深入分析对象的内存布局,与之相关的静态变量,成员函数。
2. 一个简单的例子
为简单起见,本文以class point为例子,它包含构造函数,析构函数,函数成员,对象变量,类变量和静态成员函数等语法结构。它的代码如下:
class point { public: point(int x, int y) { this->x = x; this->y = y; ins_cnt++; } ~point() { ins_cnt--; } static int get_instances() { return ins_cnt; } point & move(int addx, int addy) { this->x += addx; this->y += addy; return *this; } private: int x, y; static int ins_cnt; }; int point::ins_cnt = 0; int main() { point x(3, 4); x.move(10, 10); int p_ins_cnt = point::get_instances(); return 0; } |