我a()
在课堂上写了一个方法(工作正常).我想在该类中编写另一个调用第一个方法的方法:
void A::a() {
do_stuff;
}
void A::b() {
a();
do_stuff;
}
Run Code Online (Sandbox Code Playgroud)
我想我可以改写b()
,b(A obj)
但我不想.在java中你可以做类似的事情this.a()
.
我想这样做obj.b()
在那里obj.a()
会被称为的结果obj.b()
.
Ecl*_*pse 42
你有什么应该工作正常.如果您愿意,可以使用"this":
void A::b() {
this->a();
do_stuff;
}
Run Code Online (Sandbox Code Playgroud)
要么
void A::b() {
this->A::a();
do_stuff;
}
Run Code Online (Sandbox Code Playgroud)
要么
void A::b() {
A::a();
do_stuff;
}
Run Code Online (Sandbox Code Playgroud)
但你有什么也应该工作:
void A::b() {
a();
do_stuff;
}
Run Code Online (Sandbox Code Playgroud)
ral*_*nja 24
这正是你在做的事情.
在一种情况下,您可能会得到一些意想不到的结果。也就是说,如果A::a()
是 virtual,obj
实际上具有 type DerivedFromA
,并且 DerivedFromA::a 会覆盖A::a
。在这种情况下,简单调用a();
或更详细的调用this->a();
将不会调用 A::a,而是调用 DerivedFromA::a()。
现在,这可能是有意的,因为 A 类将 a() 声明为虚拟的。但如果你真的不是这个意思,你可以通过将调用编写为来忽略虚拟
void A::b()
{
A::a(); // or
this->A::a(); //Both ignore the virtual-ness of a()
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
61992 次 |
最近记录: |