指向数据成员的指针
2008-02-15 10:40
246 查看
指向数据成员的指针
飘飘白云
数据成员的指针有两种含义,一种是没有绑定具体对象的数据成员指针,其地址实际是该数据成员在类布局结构中的位移;另一种是绑定了具体对象的的数据成员指针,其地址是该对象的该数据成员在内存中的地址。下面参照书中的例子用vs2005中在32位的机器上写了个测试程序。
输出结果:
第一行是输出8,可以理解,前面有两个整型数据(4+4 = 8),故位移为8;
第二行理应输出4,但在vs2005中得到的是0,大概是编译器做了些类似于空基类的优化处理。
第三行是输出内存地址以及5。
#include <stdlib.h>
class Base1 {
public:
int value1;
};
class Base2 {
public:
int value2;
};
class Derived :
public Base1,
public Base2 {
public:
int value3;
};
int _tmain(int argc, _TCHAR* argv[])
{
printf("/n Point to class's data member %p./n", &Derived::value3);
printf("/n Point to class's data member %p./n", &Derived::value2);//It should be 4,but it is 0.
int Derived:: *pVal3 = &Derived::value3;
Derived object;
object.*pVal3 = 5;
printf("/n Point to object's data member %p, value is %d./n", &(object.*pVal3), object.*pVal3);
system("pause");
return 0;
}
飘飘白云
数据成员的指针有两种含义,一种是没有绑定具体对象的数据成员指针,其地址实际是该数据成员在类布局结构中的位移;另一种是绑定了具体对象的的数据成员指针,其地址是该对象的该数据成员在内存中的地址。下面参照书中的例子用vs2005中在32位的机器上写了个测试程序。
输出结果:
第一行是输出8,可以理解,前面有两个整型数据(4+4 = 8),故位移为8;
第二行理应输出4,但在vs2005中得到的是0,大概是编译器做了些类似于空基类的优化处理。
第三行是输出内存地址以及5。
#include <stdlib.h>
class Base1 {
public:
int value1;
};
class Base2 {
public:
int value2;
};
class Derived :
public Base1,
public Base2 {
public:
int value3;
};
int _tmain(int argc, _TCHAR* argv[])
{
printf("/n Point to class's data member %p./n", &Derived::value3);
printf("/n Point to class's data member %p./n", &Derived::value2);//It should be 4,but it is 0.
int Derived:: *pVal3 = &Derived::value3;
Derived object;
object.*pVal3 = 5;
printf("/n Point to object's data member %p, value is %d./n", &(object.*pVal3), object.*pVal3);
system("pause");
return 0;
}
相关文章推荐
- 指向类非static的数据成员和函数的指针用法
- 指向类数据成员、类成员函数的指针
- 十二章 类————类的数据成员可以是指向自身类型的指针或引用
- 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?
- osg源码中的ref_ptr operator unspecified_bool_type() 指向类数据成员的指针&类转化为另一类型(如自定义的C类转化为int)
- 基于数据成员是指向一个数组的指针来实现的list
- 指向类的数据成员和函数指针
- 指针指向类的静态数据成员
- 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?
- 指向数据成员的指针
- 指向类数据成员的指针
- 指向类数据成员的指针
- 指向数据成员的指针
- C++基础系列--指向数据成员的指针
- C++之指向数据成员的指针和指向成员函数的指针
- Item 15.指向类数据成员的指针
- C++必知必会 - 指向类的数据成员的指针并非指针
- 指向数据成员的指针
- C++之指向数据成员的指针和指向成员函数的指针
- c++中指向类数据成员的指针