C++:有没有办法指定从另一个类继承的通用类
C++: Is there a way to specify a generalized class that inherits from another?
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
的转换是隐式的。
如果按值传递,则会遇到对象切片,并且行为不会符合预期。
相关文章:
- 如何从另一个文件继承私有成员变量和公共函数
- 为什么我不能在主函数之外定义一个类的对象(它继承了另一个类)?
- 在一个类中使用另一个类中的函数,而不在 c++ 中使用继承
- 从抽象类继承以创建另一个抽象类时,我应该重新声明所有虚函数吗?
- 有没有办法C++将给定类的功能限制为仅另一个类(不使用继承,朋友)?
- 继承:访问另一个类的私有和公共部分
- 在 c++ 中,当一个类继承头文件中的另一个类时出错
- 继承一个类,该类继承另一个已包含的类
- C++:对于继承多个类的类,如何从一个类继承某些属性,从另一个类继承其他属性?
- 是否可以从另一个类对象调用一个类函数而不继承第一个类
- 从另一个部分专用模板类继承部分专用模板类
- 是否可以定义一个在外部"C"块中继承另一个结构的结构?
- 如何允许一个类由另一个类创建而不使用'friend'但允许继承?
- 为什么当一个模板类继承自另一个模板类时,需要重新指定 typedef 并限定函数调用?
- 在另一个项目中包括继承的类时,抽象类的链接器错误
- 从基类(车辆)继承方法,从派生类(汽车)继承值,以使用 C++ 在另一个派生类(车道)中实现
- 继承了另一个接口的接口的实现
- 使用从另一个类继承的类的对象初始化成员对象
- 类是否可以在其构造函数的参数中设置它从另一个类继承的变量的值
- 如何将"&player"对象传递到另一个继承的类构造函数("score")中?