指针及其在C++中的一些应用

本文探讨了指针的不同类型及其在C++中的作用方式,包括指针如何影响内存的解释及多态实现中指针的应用。通过实例说明不同类型指针指向不同大小内存区域的特点,并讨论了基类指针指向派生类对象时多态行为的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

每个指针都有一个相关的类型。不同数据类型的指针之间的区别不是在指针的表示上,也不在指针所持有的值(即地址)上——对所有类型的指针这两方面都是相同的(函数指针除外)。不同之处在于指针所指的对象的类型上。指针的类型可以指示编译器怎样解释特定地址上内存的内容,以及该内存区域应该跨越多少内存单元。

例如:int *m_pInt=&a;     double *m_pDou=&b;m_pInt和m_pDou分别为int型和double型的指针。本质上m_pInt也可以指向存储数值b的内存地址(内存地址是没有类型之分的),但编译器会报错。为什么呢?假设a占据内存地址1000——1003,而b占据1004——1011。当将b的内存地址赋给m_pInt,编译器只提取1004——1007这么长跨度的内存地址所存储的值,这与b值相去甚远。所以上述做法是能够的,但不允许!

在C++中,向上转型和多态中都用到了指针。一个不留神,你就会着道。

对于多态,假设有四个类CAnimal,CFeline,CTiger,CCat,它们的继承关系如右图。每种动物都有自己叫的声音,例如老虎是咆哮,而猫则是“喵喵”;不管是老虎还是猫,他们都属于动物,所以可以用基类的指针指向派生类对象,但是这时候就出现了一个问题,当调用Roar方法时,调用的到底是基类的Roar还是派生类的Roar呢?编译器如何智能的做倒这一点呢?在这里我先不解释了,等到讲C++的重要性质时再详述!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值