[英]C++: inherit base class Method
我有這個簡單的代碼:
class A {
public:
string toString() const { return "A"; }
};
class B : public A {
public:
string toString() const { // some code here }
};
我希望類B中的toString()
從類A繼承並采用一些額外的值。 在此示例中,將為:“ AB”(A:來自類A,B:額外的字符串)。
在Java中這很容易,但是我不知道在C ++中該怎么做。 我的第一個想法是從類A的toString()
中獲取字符串,並附加其他字符串。 因此,采取以下措施:我使用: static_cast<A>(const_cast(this))->toString()
但它不起作用:(
請幫我。 謝謝 :)
class A {
public:
string toString() const { return "A"; }
};
class B : public A {
public:
string toString() const { return A::toString() + "B"; }
};
在MS實現中(在Windows上),您可以改用__super :: toString(),但這是不可移植的MS擴展。
string B::toString() const {
string result = A::toString(); // calls the member method in A
// on the current object
result += "B";
return result;
}
函數調用的資格確定了將調用哪個函數重寫(如果函數是多態的),因此可以確保動態分配不會再次分配給B::toString()
。 與Java的主要區別在於,因為C ++允許多重繼承,所以您必須命名基本A::
而不是僅調用super
。
首先,您可能希望toString是虛擬的。 其次,要完成所需的操作,可以在B :: toString中執行以下操作:
class B : public A
{
...
virtual string toString() const
{
string s = A::toString();
s += "B";
return s;
}
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.