Access base class object from derived class
我可能理解继承错误,但如果:
我有一个名为base的基类和一个名为derived的派生基类,
在派生类的函数中,我可以访问派生类的基对象吗?我想有点像*这个,但是对象类型是基?
编辑:我正在重写派生类中的函数base::foo(),但在此重写函数derived::foo()中,我要用基对象调用原始函数。
派生::foo()常量{
1 2 3 4 5 6 | double Derived::foo() const { // s is a variable only associated with Derived double x; x = s + Base.foo(); // this is the line i dont know what im doing?! return x; } |
1 | const Base *base = this; |
号
虽然您通常不需要这样做,因为
但如果
1 2 | const Base *base = this; base->foo(); |
或同等:
1 | static_cast<const Base*>(this)->foo(); |
。
不叫
1 | this->Base::foo(); // non-virtual call to a virtual function |
当然,
1 | Base::foo(); |
。
很好,但是有些人更喜欢添加
要调用要重写的基类函数,请调用
您可以执行以下操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | class Base { public: virtual double foo() const { return 5; }; }; class Derived : Base { int s; public: Derived() : s(5) { } virtual double foo() const { // s is a variable only associated with Derived double x; //NOTE THE Base::foo() call x = s + Base::foo(); // this is the line i dont know what im doing?! return x; } }; |