我已经开始使用 C++ 中的类,我发现了两种不同的字段声明:
type ClassName::*var;
和
type *ClassName::var;
它们有什么区别?
编辑:还有一个问题可以像这样声明方法:
type *ClassName::method_one(...);
type ClassName::*method_two(...);
有什么区别?
最佳答案
它们是不同的。第一个声明一个指向类型为type
的成员变量的指针。
第二个是 ClassName
类的成员 var
的静态定义,类型为 type*
。
第三个(即使不完整)是返回 type*
的成员函数的定义
第四个是声明一个指向返回type
的成员函数的指针。
class A {
public :
int i;
static int *j;
int* f();
int g() { std::cout << "g" << std::endl; }
};
int* A::j; // First one
int* A::f() { } // Third one
int main() {
A a;
int A::*i_ptr; // Second one
i_ptr = &A::i;
a.*i_ptr = 2; // Modifying a.i
int (A::*mem_fn) (); // Fourth one
mem_fn = &A::g;
(a.*mem_fn)(); // calling a.g()
}
关于c++ - 这两个领域/方法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16119625/