指针和对象存取数据成员有什么区别?
来源:互联网 发布:网络端口怎么接 编辑:程序博客网 时间:2024/06/06 17:15
如果我们有两个定义:
Point3d origin,*pt = &origin;
用它们来存取data member,像这样:
origin.x = 0.0;pt->x = 0.0
通过origin存取,和通过pt存取,有什么重大差异么?
当Point3d是一个derived class,而其继承结构中有一个virtual base class,并且被存取的member(如本例中的x)是一个从该virtual base class继承而来的member时,就会有重大区别。
我们不知道编译时期这个member真正的offset位置,也就是说我们不直到pt必然指向哪一种class type,所以这个存取操作必须延迟至执行期,经由一个额外的间接导引,才能解决;但如果用origin,就不会有这些问题,其类型无疑是Point3d class,而即使它继承自virtual base class,members的offset位置也在编译时期就固定了。一个积极进取的编译器甚至可以静态地经由origin就解决掉对x的存取。
0 0
- 指针和对象存取数据成员有什么区别?
- 引用和指针变量有什么区别?
- 指针和引用有什么区别
- 指针和引用有什么区别
- 指针和引用有什么区别 .
- 引用和指针有什么区别?
- zz 指针和引用有什么区别
- 指针和引用有什么区别
- 指针和引用有什么区别
- block和函数指针有什么区别
- 句柄和指针有什么区别
- dataset 和 datareader对象有什么区别?
- 对象和实例有什么区别?
- 指针函数和函数指针有什么区别
- 指针函数和函数指针有什么区别
- 指针函数和函数指针有什么区别(转载)
- 指针函数和函数指针有什么区别
- 指针函数和函数指针有什么区别(转载)
- Git怎样撤销一次分支的合并Merge
- VC访问数据库学习总结
- 判断对象是否相等---重写equals方法
- FFmpeg里面的时间单位
- HDU 1213 How many tables
- 指针和对象存取数据成员有什么区别?
- 关于NavigationView的一点问题
- iOS开发出绚丽的界面:Quartz 2D (二)
- <!DOCTYPE html>很重要(转)
- JHipster简介
- 生成findViewById代码
- Windows批量结束进程
- java的一些学习方案!
- Android学习笔记(33):Android对话框