模板函数中调用名字包含类的函数计算机等级考试

文章作者 100test 发表时间 2010:01:01 12:57:24
来源 100Test.Com百考试题网


  有时候,我们会用宏为类生成一些函数,类名是这些函数名字的一部分,例如以下代码中,DECLARE_CLASSNAME_FUNC 定义了函数CLSfunc。另一方面,我们可能希望能够通过模板函数来调用以上函数。问题是在模板中,函数名被T代替了,在编译时不可能根据T的不同而确定调用有不同名字的函数。这里,可以引入函数重载的概念,特别要注意的是,重载函数中要用二级指针,原因是这样能够在编译时刻即知道子类有没有重载该函数(一级指针可以在类层次结构中由下向上隐式转换,故需要用二级指针)本文来源:百考试题网
  view plaincopy to clipboardprint?
  #define DECLARE_CLASSNAME_FUNC(CLS) \
  void CLS##func(){}//declare function CLSfunc
  #define CALL_CLASSNAME_FUNC(CLS) \
  CLS##func().//call function CLSfunc
  #define DECLARE_OVERRIDE_FUNC(CLS) \
  void overridefunc(CLS**){}// CLS** is preferred rather than CLS*
  class Base{
  public:
  DECLARE_CLASSNAME_FUNC(Base).
  DECLARE_OVERRIDE_FUNC(Base).
  }.
  class Derive : public Base{
  public:
  DECLARE_CLASSNAME_FUNC(Derive).
  DECLARE_OVERRIDE_FUNC(Derive).
  }.
  template

相关文章


赋值运算符复制构造函数(拷贝构造函数)易混处总结计算机等级考试
计算机二级考试C 基础:句柄计算机等级考试
C 组合框控件运用要领计算机等级考试
总结函数的参数指针参数及const修饰的情况计算机等级考试
模板函数中调用名字包含类的函数计算机等级考试
绝对不要重新定义继承而来的nonvirtual函数计算机等级考试
C 反射的一种实现方式计算机等级考试
ACE编程遇到的问题计算机等级考试
改进过的快速排序,正好输出10个计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛