C++编程中的细节--内容覆盖
来源:互联网 发布:上海数据库开发培训 编辑:程序博客网 时间:2024/05/29 18:07
一个简单的示例来讲解下这个问题。
class Concrete{public:private:int val;char c1;char c2;char c3;};class Concrete1{public:int val;char bit1;};class Concrete2 :public Concrete1{public:char bit2;};class Concrete3 :public Concrete2{public:char bit3;};int main(){Concrete2 *pc2;pc2->val = 10;pc2->bit1 = 'a';pc2->bit2 = 'b';Concrete1 * pc1_1, *pc1_2;pc1_1 = pc2;*pc1_2 = *pc1_1;cout<< pc2->bit2<<endl;return 0;}
本来bit2的值是b,但是通过赋值后 bit2的内容被pc1_1指向的对象中为分配的内存内容覆盖了(因为编译器有个内存对齐的操作,也就是上面的三个类的大小分别是8bytes,12bytes,16bytes)还是贴张图吧。
当经过这个操作:
pc1_1 = pc2;*pc1_2 = *pc1_1;对象pc1_1中未分配的内容就复制给了pc1_2指向的对象。
以后写程序的时候还真得注意这些小细节。
- C++编程中的细节--内容覆盖
- C++编程中的细节—内容覆盖
- 编程中的一些细节
- 编程中的细节
- C语言编程细节
- c编程规范细节
- 编程中的细节--指针(转载)
- C\C++编程细节学习
- C编程细节(4)
- C语言中的小细节
- c语言中的一些细节
- c语言中的函数覆盖
- C++&C编程相关小细节
- java编程基础中的一些小细节
- 编程中的细节问题(一)
- go 编程过程中的一些细节
- C编程的细节(1)
- C编程的细节(2)
- 网络驱动程序 各个函数详解及图解 DM9000A网卡驱动框架源码分析
- android网络监听事件机制(kernel, c++, java)
- gdb调试mpi
- android sdk 超时 解决办法
- android软键盘弹出引起的各种不适终极解决方案
- C++编程中的细节--内容覆盖
- php网页如何调用桌面应用程序C# winform
- MFC Cstring 和int 类型的转化
- XPath implementation in Clojure
- 品人生就像似品茶
- 爱、就疯狂、不爱、就坚强,你还相信爱情么
- Spring连接MySQL、Oracle和SQL Server的数据库运动连接属性
- 关于BigDecimal的构造函数与大小比较
- POJ1005,I Think I Need a Houseboat,数学水题