我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 次 |
| 最近记录: |