gpt4 book ai didi

c++ - 这两个领域/方法有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:27:58 25 4
gpt4 key购买 nike

我已经开始使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com