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
相关推荐
-
用 ADB 去控制 GPIO c/c++
2019-3-30
-
c++计算1到100以内的质数 c/c++
2019-9-12
-
TinyWeb–C++构建高性能Web服务器 c/c++
2019-3-28
-
以c的视角来理解c++的多态 c/c++
2019-3-30
-
c语言的#include和java的import的区别以及库调用 c/c++
2019-3-28
-
DES对称加密算法详解和c++代码实现(带样例和详细的中间数据) c/c++
2019-5-14
-
常用的数学函数以及浮点数处理函数 c/c++
2019-3-30
-
已知仿射变换的系数,求仿射变换的反向系数 c/c++
2019-9-15
-
Cocos2d-x之初级物理引擎 c/c++
2019-3-28
-
C++ Primer注解 – 有符号数和无符号数 c/c++
2020-6-15