有没有一种方法可以将现有函数用作类的一部分?如果是,如何
Is there a way to use an existing function as a part of a class? If yes, how?
我有一个函数,我想在不同的类中使用。这可能吗?
示例:
int getNumber()
{
// do something here that will use some values like:
int number = num * pi;
return number;
}
class Human
{
int num;
// other member
int getNumber(); // same as above
}
class Robot
{
int num;
// other member
int getNumber(); // same as above
}
getNumber()
函数可以短为return num;
,也可以长为取决于函数内部的计算。
getNumber()
内部的num
值是Human
和Robot
类的num
成员。尽管如此,这些课程并没有亲子关系或朋友关系。
这当然很容易。虽然在C++中没有用于委托的甜美语法(遗憾的是,这带来了很多继承的滥用…)
1.自由功能方式
int transformNumber(int num) { return num * pi; }
class Human {
public:
int getNumber() const { return transformNumber(num); }
private:
int num;
};
2.合成方式
struct NumberThing {
int num;
int getNumber() { return num * pi; }
};
class Human {
public:
int getNumber() { thing.getNumber(); }
private:
NumberThing thing;
};
选择你最喜欢的。
创建一个具有此功能的类,并扩展使用该功能的其他类。
这是一个使用继承的好实例。这两个对象都有共同点,这通常意味着它们实际上是一个更通用类的子类:
class Being
{
int num;
int getNumber() {/* .. */}
}
class Robot: public Being
{
}
class Human: public Being
{
}
相关文章:
- C++:如何使函数只返回作为列表一部分的字符串
- 如何分析代码的哪一部分创建了线程?
- 如何使用接口指针调用方法,该指针是其具体类的一部分,而不是接口的一部分
- 如何检测文件夹是否太重,如果是,请删除其中的一部分
- 如何将文件的一部分读取到std::list缓冲区?
- 如何将字符串的一部分转换为整数
- 如何有效地将一个大std::字符串的一部分转换为float
- OpenCV-如何将vale添加到图像一部分的所有像素
- 如何反转数组的一部分?
- 如何在数组的一部分中查找特定值的第一个元素
- 如何释放子阵列的mem,它是更大数组的一部分
- 如何正确实现 std::all_of 函数来验证字符串的一部分?
- 如何只减慢一部分代码而不减慢其余部分?
- 如何在使用 SDL 编写的游戏中仅实现一部分 OpenGL 代码?
- 如何进行编译时type_check并且仅在类成员的类型与类型匹配时才编译类的一部分?
- boost库的哪一部分使cout能够打印wstring以及如何打印?
- 如何在不复制的情况下比较字符串的一部分?
- C 如何将二进制文件的一部分复制到新文件
- 如何将精美打印作为Bazel的一部分
- 编译时如何禁用代码的一部分