首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于常数据成员,该怎么处理

2014-01-22 
关于常数据成员书上的选择,这句话是错的:可以在类体外面定义常数据成员。为啥是错的?[解决办法]既然是“成员

关于常数据成员
书上的选择,这句话是错的:可以在类体外面定义常数据成员。
为啥是错的?
[解决办法]
既然是“成员”,自然应该属于一个类,怎么能在外面定义呢。
[解决办法]
类有静态成员(属于对象)和非静态成员(属于整个类)两种成员(变量,函数)
成员函数,不过是一种语法糖而已
通过隐藏的,第一个参数,传递对象地址, 即 this 指针,调用函数

对象内部并不存储每一个函数
只有虚函数,需要存储在虚函数表中,对象中需要存储虚表指针。

非静态成员变量,是一个类的对象的一部分,静态成员变量不是,是类作用域的,全体类对象可以使用的变量。

实际上,可以再类外部定义静态成员变量,即使用 const 修饰。
例如

class A{
public:
int a;//类内声明,同时也是形式上的定义,而非静态成员的实际定义,
      //是在定义对象的时候,分配内存和初始化,内置类型不需要初始化。
double b=10;//C++11 成员变量,类内初始化,不支持的编译器,不能这么做
static const double x;//静态成员变量(常量)类内声明
static const int y;//静态成员变量(常量)类内声明
static const M =20;//静态成员常量类内定义
int c[M];          //数组成员变量;-静态成员常量,类内定义后,可以用来定义数组(作为数组长度)。  
};

const double A::x = 0;//静态成员变量(常量)类外定义
const int A:: y = 0;  //静态成员变量(常量)类外定义

热点排行