没有类实例的类成员的地址
Address of a class member without a class instance?
我偶尔会看到一些类似于下面的代码:
class A {
int b;
}
void foo() {
int* blah = &A::b;
// Other stuff.
}
但是,在没有类实例的情况下获取类成员变量的地址有什么用呢?它有什么作用?
您的代码格式不正确,无法编译。 blah
的类型不是int*
,而是int (A::*)
。 也就是说,它不是"指向int
的指针",而是"指向类型为int
的类类型A
的数据成员的指针"。
请注意,为了获取指向成员的指针,该成员必须是可访问的。 要计算foo()
中的&A::b
,b
需要成为公共数据成员,或者foo()
需要成为A
的朋友。
成员的指针不指向对象。 相反,指向成员的指针可以绑定到对象以获取其数据成员的值。 通过将blah
指向成员的指针绑定到 A
的实例,可以获取 A
对象的b
数据成员的值。 例如
A x;
int b_value = x.*blah; // b_value has the value of x.b
类
A
具有int b
。这意味着b
是类A
的数据,如果你有A
的实例,你可以得到指向b
的指针。
我想你想问这个案子:
class A{
int foo(int i) {
}
}
编译后,方法foo有地址,就可以得到指向&A::foo
的指针。
相关文章:
- C++:用户定义的类,以成员字段作为地址
- 为什么成员函数地址离自由函数这么远?
- Assimp 库错误:获取打包成员的地址
- C++ - 非静态 void* 成员,指向具有相同地址但不同值的不同对象的另一个非静态成员
- 在指向现有内存地址的 hpp 文件中声明成员函数的最佳方法
- C++多态性:有没有办法找到对象成员函数的地址?
- 如何获取结构体成员的地址
- 使用成员的地址初始化基类是否合法?
- C++:获取包含成员子对象的完整对象的地址
- 从对象及其成员的地址获取指向成员的指针
- 获取未初始化对象成员的地址是否定义良好?
- 指向未由对象地址初始化的对象的指针如何将值分配给类的数据成员
- 类成员地址与类指针值相同
- 正在更改类成员地址
- 继承成员地址的C++标准
- C++中构造函数中的数据成员地址
- 正确传递类的成员地址并能够调用它
- 通过成员地址激活嵌套工会合法吗
- 工会成员地址需说明
- 获取函数成员地址