什么是::*在C+中+;? 当我面对时,我正在阅读一个基本的C++教程。 ::*
在下面的代码中。我可以知道那是什么吗什么是::*在C+中+;? 当我面对时,我正在阅读一个基本的C++教程。 ::*,c++,C++,在下面的代码中。我可以知道那是什么吗 class A { public: protected: int i; }; class B : public A { friend void f(A*, B*); void g(A*); }; void f(A* pa, B* pb) { // pa->i = 1; pb->i = 2; // int A::* point_i = &A::i; int A::* point_i2 = &B::i;
class A {
public:
protected:
int i;
};
class B : public A {
friend void f(A*, B*);
void g(A*);
};
void f(A* pa, B* pb) {
// pa->i = 1;
pb->i = 2;
// int A::* point_i = &A::i;
int A::* point_i2 = &B::i;
}
void B::g(A* pa) {
// pa->i = 1;
i = 2;
// int A::* point_i = &A::i;
int A::* point_i2 = &B::i;
}
void h(A* pa, B* pb) {
// pa->i = 1;
// pb->i = 2;
}
int main() { }
根据我目前的C++知识,下面有什么类似的内容?
int A::* point_i2
之后,当您有一个随机a
或B
对象时,您可以访问点2
指向的成员
B b;
b.*point_i2 = ...;
在上述点_i2
初始化之后,这将更改b.i
想一想
类名::*
就像你想&
和*
一样:它只是另一个“类似指针/引用的工具”,你可以在声明中使用它来指定你要声明的东西。point\u i2
是一个指向成员的指针。这意味着它指向一个int
成员变量,该变量在类A
中声明,那么这像“成员类指针”吗?就像方法类指针一样?简单地说。指向类成员的指针。@Gui什么是方法类指针?你的意思是函数类型A::*
?是的,它们是一样的。指向数据成员的指针的成员类型为对象类型,而指向成员函数的指针的成员类型为函数类型。从语法上讲,您还可以对函数类型使用函数声明符语法,使其看起来像R(A::*)(参数)cv qual ref qual,spec除外
。虽然如果你不熟悉C++语法,使用别名模板和写<代码>别名A::*更容易。没有“基本”C++任何东西都应该覆盖成员指针。你有那个教程的链接吗?@Nicolas可能不是很基础:)
B b;
b.*point_i2 = ...;