C++ static类成员
来源:互联网 发布:皮尔斯生涯数据 编辑:程序博客网 时间:2024/05/22 00:21
一,static类成员
对于特定类类型的全体对象而言,访问一个全局对象有时是必要的。例如,在程序中需要统计已创建的特定类类型对象的数量。但是,定义一个全局对象会破坏封装性,一般的用户代码就可以修改这个值。类可以定义静态成员,而不是定义一个可普遍访问的全局对象。通常,非static数据成员存在于类类型的每个对象中。不像普通的数据成员,static数据成员独立于该类的任意对象而存在。每个static数据成员是与类相关联的,而不是与该类的对象相关联的。类也可以定义static成员函数,static成员函数没有this指针,它可以直接访问所属类的static成员,但是不能直接访问非static成员。
二,static成员
1,定义static成员:
在成员声明前加上关键字static,将成员声明为static。static成员遵循正常的公有/私有访问规则。例如:
class Account{private: static double interestRate; double amount;public: static double rate(){ return interestRate; } static void setRate(double newRate){ interestRate = newRate; }};
2,使用类的static成员:
可以通过作用域操作符从类直接调用static成员,或者对象、引用、指向该类型对象的指针间接引用。例如:
int main(){ Account ac; Account *pac = ∾ //对象间接引用 ac.rate(); //指针间接引用 pac->rate(); //使用类类直接调用 Account::rate(); return 0;}
三,static成员函数
1,在类中声明static成员函数时要使用static关键字,在类外定义static成员函数,不用重复使用static关键字。
2,static成员函数没有this指针,因为static成员是类的组成部分,但不是任何对象的组成部分,因此,static成员函数没有this指针。因为static成员函数不是任何对象的组成部分,所以static成员函数不能声明为const。毕竟,将函数声明为const就是承诺该函数不会修改所属的对象。最后,static成员函数也不能声明为虚函数。
四,static数据成员
1,static数据成员必须在类类定义体的外部进行定义。不像普通的数据成员。static成员不是通过类构造函数进行初始化,而是在定义时进行初始化。例如:
class Account{private: static double interestRate; double amount;public: static double rate(){ return interestRate; } static void setRate(double newRate){ interestRate = newRate; }};//在类体外面定义并初始化static数据成员double Account::interestRate = 20.0;
2,特殊的const static成员
类的static数据成员,像普通数据成员一样,不能在类的定义体中初始化。相反,static数据成员通常在定义时才初始化。这个规则的一个例外是,只要初始化式是一个常量表达式,整型const static数据成员就可以在类的定义体中进行初始化。同样,它可以用在任何需要常量表达式的地方,例如指定数组成员daily_tbl的大小。
class Account{private: //const static常量在类体中进行初始化 const static period = 20; double daily_tbl[period]; double amount;public: static double rate(){ return interestRate; } static void setRate(double newRate){ interestRate = newRate; }};
3,static成员不是类对象的组成部分
普通成员都是给定类的每个对象的组成部分,static成员独立于任何类对象存在,不是类对象的组成部分。所以,它们的使用方式对于非static数据成员而言是不合法的。例如,static数据成员的类型可以是该成员所属的类的类型。非static成员被限定声明为其自身对象的指针或引用。
class Account{private: static Account ac; Account *pac;public: //};
- static c ,C++类static 成员变量
- static c ,C++类static 成员变量
- static C,C++类static 成员变量
- c++-类的static成员
- C++:类内static成员
- static类成员(C++)
- C++static类成员,static类成员函数
- 【C/C++】类中的const成员 static成员
- 【C/C++】类中的static成员、static const成员和const成员
- 类静态成员static(C++)
- 类静态成员static(C++)
- c/c++ 类的static成员
- [C++]static成员变量
- C++static 数据成员
- c++static数据成员和成员函数
- C/C++的static成员
- C++static静态数据成员
- C++static静态成员函数
- 电脑忘记密码怎么办的解决方法
- C语言宏定义用do{}while(0)的情况
- 迷宫游戏 51Nod
- 基于Dragonboard 410c的PMIC简介
- Spring Boot Rest Service 下载文件
- C++ static类成员
- 欢迎使用CSDN-markdown编辑器
- zkw线段树详解
- 统计输入字符串中各不同字符出现的频度
- 换一种思路--使用behavior实现recyclerView的下拉加载更多
- linux fdisk命令使用
- 图片测距实验
- Shadowsocks如何设置多IP
- 导出csv,字符乱码,字符集编码转码,iconv()