1.2 关键词带来的差异,class 与 struct
2015-07-16 22:02
232 查看
Q1:strcut 关键词与 class 关键词的区别
Q2:策略性正确的struct
Q3:C++ class 内存布局
Q4:一个 C 中的使用技巧:把单一元素数组放在一个 struct 的尾端,则每个 struct 对象都可以用一个可变大小的数组
[code]①. 除了访问级别外并无不同 ②. 在观念上,struct 关键词是 C 的数据抽象概念,class 关键词是C++ 的 ADT(抽象数据类型)观念
Q2:策略性正确的struct
[code] ①. 当单纯定义仅含数据成员的结构体时,使用 struct 将数据封装起来,保证拥有与 C 兼容的空间布局 ②. 当定义含操作的类时,使用 class 较好 注:当需要 C 声明那样的数据时,应将所需部分用 struct 声明,并通过转换操作符从 class 中萃取出来 Eg:
[code]Struct C_point{…}; Class Point { Public: Operator C_point() {return _c_point;} //转换操作符的使用 Private: C_point _c_point; }
[code] 此时 C_point 有与 C 完全兼容的空间布局
Q3:C++ class 内存布局
[code]①.处于同一个 access section 的数据,必定保证以其声明顺序出现在内存布局中。 ②.处于不同的 access section 中的数据之间的排列顺序则不一定。
Q4:一个 C 中的使用技巧:把单一元素数组放在一个 struct 的尾端,则每个 struct 对象都可以用一个可变大小的数组
[code]Eg:
[code] Struct mumble { Char pc[1]; }; //读取一个字符串,为struct 本身与该字符串配置足够的内存 Struct mumble * pmumbl = (struct mumble *) malloc (sizeof( struct mumble) + strlen(string) + 1 ); Strcpy(pmumble->pc,string);
[code]但是在C++ 中,这种技巧有可能顺利实现,有可能不能实现 Eg:
[code] Class stumble { Public: //…. Protected : //…. Private: char pc[1]; };
[code] 此时,若 protected data member 位于 private data member 之前时,可以实现该技巧;否则,将无法实现。
相关文章推荐
- iOS 创建Label 提示“已成功下载”
- 修整后,开始起航
- The first day
- 最美好的时光----忆母校[转]
- cug 1133
- Redis基本数据类型--string
- 文件递归及异常
- MVC路由规则以及前后台获取Action、Controller、ID名方法
- 插入排序) 希尔排序 (最小增量排序)
- 转换运算符
- 软谋未来
- tomcat配置默认目录
- r语言学习(3)
- Majority Element
- java开发之可变参数
- [leedcode 97] Interleaving String
- UVa 10935 - Throwing cards away I (队列问题)
- (七十三)iOS本地推送通知的实现
- 静态内部类和非静态内部类的区别
- HDU 1558 Segment set(判断线段相交+并查集)