【发布时间】:2011-08-22 18:58:08
【问题描述】:
我正在学习 C++(来自 java),最近发现您可以传递函数。这真的很酷,我认为非常有用。现在我在考虑如何使用它,我脑海中闪现的一个想法是一个完全可定制的类。
我对完全可定制的类(代码)的训练中最好的例子就是一个人类。 Person 将拥有与 P 相关的所有功能。后来 Person 可能会拿起剑 (S),所以现在 Person 可以访问与 P 和 S 相关的所有功能。
这是否存在限制或性能问题?这是不是很草率,只是不屑一顾?
任何见解都具有教育意义,谢谢。
~艾顿
【问题讨论】:
-
FWIW:在 Java 中,通过传递具有给定主格类型的对象来模拟同样的事情。例如,一个线程可以传递一个可运行的“函数”(嗯,一个只有一个“运行”方法的对象的实例)。 C# 和 Scala 等语言隐藏了这一细节(但仍将函数作为对象传递给糖)。
-
然而,在 java 中,您必须将定义硬编码到类中(当然,您也可以即时修改类,但如果我使用新代码,则必须重新编译才能使用'我没有弄错)。您不能只将函数变量传递给类并在 C++ 中执行该函数吗?无需硬编码...我猜是类型?
-
你可以做到。你应该这样做吗?几乎总是没有。诀窍是知道什么时候应该这样做。
-
你能告诉我为什么吗?只是形式不好?
-
@AedonEtLIRA 类的定义必须是硬编码的,就像函数的定义必须是硬编码的一样(不包括“魔术”运行时生成)。否则,两者都可以视为(不同种类的)对象并且都是可分配的。
标签: c++ class function mutable