数组作为参数时,传入基类首地址和子类首地址的区别
来源:互联网 发布:win10电脑优化软件哪个 编辑:程序博客网 时间:2024/06/05 09:21
class A
{
public:
A() {};
~A() {};
virtual void SetTest(){ printf("a/n");};
int m_iFirst;
};
class B :public A
{
public:
B() {};
~B() {};
virtual void SetTest(){ printf("b/n");};
int m_iSecond;
};
void WanMeiTest(A* a, int iCount)
{
void * p = a + 1;
for(int i = 0; i < iCount; i++)
{
(a+i)->SetTest();
}
}
在调用的时候如果转入的是
A a;
B b;
int c = sizeof(a);
c = sizeof(b);
A aBase[2];
B* aChild = new B[5];
B* pp = aChild + 1;
WanMeiTest(aChild, 5);
结果会崩溃,原因在于WanMeiTest里面的内存偏移是按照A的大小来的,除非里面强转成B类型的指针
- 数组作为参数时,传入基类首地址和子类首地址的区别
- delphi 动态数组和静态数组首地址的区别
- 作为函数参数时String和String[]数组的区别
- 数组首地址与数组名取地址的区别
- 数组首地址与数组名取地址的区别
- 数组首地址与数组名取地址的区别
- Postman 如何传入一个数组形式的参数用来测试URL路由地址
- delphi数组地址和VC的区别
- delphi数组地址和VC的区别
- 计算NandFlash要传入的行地址和列地址
- 数组的首地址和数组首元素的地址
- 数组的首地址和数组首元素的地址
- 数组首地址和数组第一个元素的地址
- 数组地址和数组首元素地址
- C语言数组元素地址作为函数参数
- 数组作为参数传递,是地址的传递,不是值传递。
- 数组名字和数组取地址的区别
- 数组名和数组名取地址的区别
- C#下调用DOS程序的一些经验
- mysql复制创建表
- 嵌入式方向的牛人--培训讲师
- awk 学习笔记
- 分隔字符串的函数
- 数组作为参数时,传入基类首地址和子类首地址的区别
- 删除空闲共享内存的脚本
- linux下所有用到dlopen类似函数的程序编译
- expdp
- [转]iphone项目中使用opencv教程
- 【批处理】sleep处理
- Linux下SPI驱动分析(2)
- mysql中 set names utf8 出现的问题
- android.util.XML介绍