当使用指向成员的指针(AKA 点星或箭头星)来访问类成员时,我们可以使用以下语法:
A * pa;
int A::*ptm2 = &A::n;
std::cout << "pa->*ptm: " << pa->*ptm << '\n';
我的问题是声明是如何&A::n
工作的?
在上面的例子n
中是一个变量。如果不是一个成员变量,而是n
一个函数(并且我们定义了一个指向成员函数的指针而不是指向成员的指针),我可能会认为因为类的函数可以是有效的静态函数(参见Nemo 的评论),我们可以通过&A::some_function
. 但是我们如何通过类作用域解析来获取非静态类成员的地址呢?当我打印 的值时,这更加令人困惑,&A::n
因为输出仅仅是1
.