从Derived类返回值到Base类(Return value from Derived class to Base class)

编程入门 行业动态 更新时间:2024-10-08 18:41:20
从Derived类返回值到Base类(Return value from Derived class to Base class)

我在派生类中有一个值,我希望使用基类中的函数返回,这可能吗? 或者我必须在基类中声明变量才能这样做?

我只是在派生类中调用该函数吗?

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; };

更多推荐

本文发布于:2023-08-02 08:56:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1372688.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:返回值   Derived   Base   class   Return

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!