C++ 类指针的问题
这一部分要谈的是指针的类型。
Q1 : 一个指向class-a的指针,和一个指向class-b的指针 它们有什么区别?
比如:
Animal * a; int *pi; string * s;
相同之处:
从内存的角度来看,没有什么问题,它们都是在自己的内存空间里面放置一个地址。大小都是4。
不同之处:
不同指针之间的差异,是在其所寻址出来的object类型不同。也就是说,“指针类型”会教导编译器如何解释某个特定地址总的内存内容及其大小。也就是区别在于:
- 如何解释指针指向的这个内存空间里面的二进制数,比如unsigned int 和int 就是完全不一样的解释。
- 告诉编译器,指针可访问的偏移的长度是多少
我们在回到这个类指针的问题,如果有一个基类和一个派生类的指针,那么它们的区别是什么?
class Animal { private: int loc; int id; public: ... }; class Bear : public Animal { private: char name[8]; int age; public: ... }; int main(){ Bear b; //那么指针ap和bp有什么区别? Animal * pa = &b; Bear * pb = &b; }
还是刚才的那个问题,ap 和bp有什么区别?
它们都指向的是派生类对象b的第一个字节的地方,其间的差别是,pb所涵盖的地址范围包含了整个bear 对象,但是pa所涵盖的地址只包含了bear对象中基类的部分。
原文地址:https://www.jianshu.com/p/32b08f0e9f20
相关推荐
-
用Cocos Code IDE写Lua,如何与项目中的C++代码和谐相处 c/c++
2019-4-1
-
systemtap 探秘(三)- 类型、变量和数组 c/c++
2019-9-15
-
C++标准委员会7月科隆会议中投票通过的特性 c/c++
2019-9-1
-
[Qt]Qt程序发布:在windows下打包成exe文件的过程 c/c++
2019-3-29
-
C++ 自增、自减运算符的重载和性能分析 c/c++
2020-6-15
-
比较C++、Java、Delphi声明类对象时候的相关语法和原理 c/c++
2019-4-1
-
进程基本-进程创建,僵尸进程,exec系列函数 c/c++
2019-9-8
-
进程间通信之匿名管道阐述 c/c++
2019-3-30
-
游戏算法实践——俄罗斯方块 c/c++
2019-3-29
-
C++ 手把手教你实现可变长的数组 c/c++
2020-6-15