C++:有没有办法指定从另一个类继承的通用类

C++: Is there a way to specify a generalized class that inherits from another?

本文关键字:另一个 继承 有没有 C++      更新时间:2023-10-16
class Vec
{
    double dim[];
public:
    Vec(void);
    ~Vec(void);
    virtual void Add(Vec vector) = 0;
};

我想将 Vec::Add() 中的Vec替换为"从Vec继承的任何类"。有没有办法做到这一点?

将参数更改为对 const Vec 的引用:

virtual void Add(Vec const &vector) = 0;

Vec派生的类(公开(可以通过引用传递给基类。

此外,由于您显然计划使用 Vec 作为基类,您可能也希望将其 dtor 设置为虚拟。否则,如果尝试通过指针或对基的引用来销毁派生类型的对象,则会得到未定义的行为。

使用 const 引用 Vec,或指向 Vec 的指针

class Vec
{
    double dim[];
public:
    virtual void Add(const Vec& vector) = 0;
};

是的,您传递指向Vec的指针或引用:

 class Vec
{
    double dim[];
public:
    Vec(void);
    ~Vec(void);
    virtual void Add(Vec* vector) = 0;
};

从指针到派生Vec* Vec class的转换是隐式的。

如果按值传递,则会遇到对象切片,并且行为不会符合预期。

相关文章: