C++面向对象 静态成员和友元
第十一章 静态成员和友元 11.1 静态成员 1.C++类当中的静态数据成员仍借用保留字static,但是与之前的静态全局变量,静态局部变量以及静态函数没有关系。 2.静态数据成员不占用具体对象的数据空间。 3.静态数据成员的创建和销毁处分权不属于任何对象。对象有权利读和写静态成员。静态成员应该在创建任何具体对象之前就可以访问,所以要求静态成员在创建类的任何对象 之前就要存在(犹如全局变量、全局对象在main函数前面执行一样)因此静态数据成员应该在主函数之前先定义初始化。 4.静态数据成员不能没有定义也不能不定义。应该将类的静态数据成员定义和初始化语句放在类的内部实现源文件当中。 格式为: 数据类型 类名::静态数据成员名=初始化值; 或者: 数据类型 类名::静态数据成员名(初始化值); (在这里不能再写保留字static) 5.静态数据成员的生命期是全局的,与是否创建了对象没有关系。 6.要访问静态数据成员的时候,可以用对象访问也更一般是用类名访问。 对象名.静态数据成员名 类名::静态数据成员名 7.静态成员函数的声明语法格式: static 返回类型 静态成员函数名(形式参数表)在类体外定义的时候不能添加保留字static! 8.静态成员函数可以被该类所有对象所使用,但是注意静态成员函数没有隐含传递所谓的“本对象地址”的指针形式参数this,只能显式地传递对象作为参数。