我在派生类中有一个值,我希望使用基类中的函数返回,这可能吗? 或者我必须在基类中声明变量才能这样做?
我只是在派生类中调用该函数吗?
class Base { public: int getNum() const { return number; } }; class Derived : public Base { private: int n = 50; };I have a value in the derived class that I want to return using a function from the base class, is that possible? Or do I have to have the variable declared in the base class to do so?
Would I just call the function in the derived class?
class Base { public: int getNum() const { return number; } }; class Derived : public Base { private: int n = 50; };最满意答案
我在派生类中有一个值,我希望使用基类中的函数返回,这可能吗?
是的,您可以使用传递给基类构造函数的引用,如下所示:
class Base { public: Base(int& number_) : number(number_) {} int getNum() const { return number; } private: int& number; }; class Derived : public Base { public: Derived() : Base(n) {} private: int n = 50; };另一种方法(不使用virtual getNum() const; )使用模板化基类(又名静态多态):
template <typename D> class Base { public: int getNum() const { return static_cast<D*>(this)->getNum(); } }; class Derived : public Base<Derived> { public: Derived() {} int getNum() const { return n; } private: int n = 50; };I have a value in the derived class that I want to return using a function from the base class, is that possible?
Yes, you can use a reference passed to the base classes constructor like so:
class Base { public: Base(int& number_) : number(number_) {} int getNum() const { return number; } private: int& number; }; class Derived : public Base { public: Derived() : Base(n) {} private: int n = 50; };Another way to do it (without using virtual getNum() const;) is using a templated base class (aka static polymorphism):
template <typename D> class Base { public: int getNum() const { return static_cast<D*>(this)->getNum(); } }; class Derived : public Base<Derived> { public: Derived() {} int getNum() const { return n; } private: int n = 50; };更多推荐
发布评论