• C++ 模板函数的调用可见性


    程序中常常因为多态性的缘故要使用虚函数,为了传递这种多态性,往往会以函数参数的形式来装载这些多类型参数给特定底层函数处理。

    这个时候,往往要在虚函数中实现一个底层类的模板特化。由于模板特化的定义可见性,这个底层A类的模板有两种处理方法:

     1)类域内一般采用inline 模板函数,函数申明和定义可以分离到.h和.cpp里。

     2)最常见的情况是采取,申明,定义一起放在.h中,从而保证模板可被其他类,函数调用的特性。

    如:

    //h

    class A{

    //1)templete <class T>  inline int funcA(T parm1, int p2);

    2)templete <class T>  inline int funcA1(T parm1, int p2){//do something....}

    };

    //cpp

    //1)templete<class T>inline int A:: funcA(T parm1, int p2){}

    ///////////////////////////////////////////Use funcA or funcA1///////////////////////

    class B{

    ///funcB is a virtul function for override by B

    int funcB(int a);

    };

    int B::funcB(int a)

    {

      A pA;

         int pp1 = 2, a = 0;

         double pp2 = 2.34;

         pA.funcA1(pp1, a);//is ok

         pA.funcA(pp1,a);//link erro

    }

  • 相关阅读:
    对组件库对再次封装
    cube-ui修改按钮颜色
    移动端框架
    mac环境变量
    Promise {<pending>
    MAC升级node及npm
    create-react-app项目中的eslint
    查看删除分支
    git分支的相关问题
    centos7系统下安装php-fpm并配置nginx支持并开启网站gzip压缩
  • 原文地址:https://www.cnblogs.com/erickingxu/p/4249523.html
Copyright © 2020-2023  润新知