C++数据成员
来源:互联网 发布:淘宝手机收藏地址转换 编辑:程序博客网 时间:2024/05/17 07:14
说明:static成员变量在继承体系中只有一份,其访问方式限制(public,private)和普通成员变量相同,但注意使用类名访问时应该B::val而不是B.val(与C#不同)。转载请尊重原创、保留相关链接本文来自多宝平台 :http://www.mbodb.com
Data member 的存取
1. static data member
(1) 每一个static member的存取,并不会造成任何空间或执行时间上的负担。
另外 如果有Point org,*p=&org;
则org.x=0与p->x=0执行开销完全相同,这也是唯一一种情况,因为static member并不在对象中,这只是个语法上的便宜行事而已。
(2)即使这个static member是经过虚拟或间接继承而来的,依然不影响他的存取效率。因为他是程序中的唯一实体。
(3)两个类有同名的static member并不会造成名字冲突,多宝因为属于不同的Class,会被C++名字修饰机制修饰成不同名字。
(4)另外,如果取一个static member的地址会得到一个指向其数据类型的指针(如 int*),而不是一个指向其class member的指针。因为static member并不在一个class object之中。
2. Nonstatic Data Member
(1) 欲对一个nanstatic data member进行存取,编译器需要使用对象的地址加上data member的偏移量(offset)。(data member的偏移量可在编译期获得)
(2) 对于org.x=0与p->x=0的存取效率,当x是一个直接类成员,或者在单一继承、多继承中(多继承中offset也是在编译期计算好的),两者效率完全相同,但是如果x是虚基类的成员,则后者的存取效率会慢一些。因为编译器不能确定p指向的基类还是派生类,而指向不同的类,虚基类的位置是不同的,也就导致data member的偏移量不同,所以这个操作必须延迟到执行期。
- C++static 数据成员
- C++:可变数据成员
- c++static数据成员和成员函数
- C++static静态数据成员
- C++——类数据成员和类成员函数
- c++static数据成员和成员函数(细嚼慢咽)
- static(c++)静态数据成员和静态成员函数
- c++:静态函数成员与静态数据成员
- 3-6 静态数据成员与静态成员函数(c++)
- C++_静态数据成员和静态成员函数
- Objective-C 类,数据成员,函数成员,对象,
- c++static数据成员的使用。
- 【C++】类的静态数据成员
- Objective-C类的静态数据成员
- C++:静态成员函数,静态数据成员,成员函数存储方式
- c++中类数据成员的重载问题
- 【C++】类的静态常量数据成员! static const
- C++基础系列--指向数据成员的指针
- 2014百度之星预赛1004 Labyrinth
- 指针的理解
- OCP-1Z0-051 第174题 事务的组成
- Linux DDNS配置
- Grails导出csv格式的文件
- C++数据成员
- 机房收费重构——关于面向对象和分层的纠结
- Div+CSS 布局大全DIV+CSS布局大全
- 美媒称中国正造第二架歼31 大量应用激光打印
- MPI聚合通信之MPI_Barrier函数
- 句柄类的应用以减少重复编译
- Flex 复杂XML 解析XML
- Unix下配置Scheduler的过程和出现的NQSError问题
- bmp 转 dxf