覆盖 returns 取消引用 "this" 的方法
Override method which returns dereference to "this"
我在 Base
class 中有一个方法 returns 取消对 this
的引用。我想在 Derived
class 中使用此方法,但还要稍微扩展它。这个例子不言而喻:
#include <iostream>
class Base {
private:
int value = 0;
public:
int getValue() { return value; }
virtual Base& increase() {
value++;
return *this;
}
};
class Derived : public Base {
public:
Derived& increase() {
Base::increase();
if (getValue() == 1) std::cout << "Success" << std::endl;
return *this;
}
};
据我了解,在上面的实现中Base::increase();
只会在临时分配的Base
对象中增加一些value
。我该如何解决?
Base::increase();
在 this
上调用基本方法(不涉及临时对象)。
如果你更清楚的话,你甚至可以这样写
this->Base::increase();
我在 Base
class 中有一个方法 returns 取消对 this
的引用。我想在 Derived
class 中使用此方法,但还要稍微扩展它。这个例子不言而喻:
#include <iostream>
class Base {
private:
int value = 0;
public:
int getValue() { return value; }
virtual Base& increase() {
value++;
return *this;
}
};
class Derived : public Base {
public:
Derived& increase() {
Base::increase();
if (getValue() == 1) std::cout << "Success" << std::endl;
return *this;
}
};
据我了解,在上面的实现中Base::increase();
只会在临时分配的Base
对象中增加一些value
。我该如何解决?
Base::increase();
在 this
上调用基本方法(不涉及临时对象)。
如果你更清楚的话,你甚至可以这样写
this->Base::increase();