zoukankan      html  css  js  c++  java
  • 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

    }

  • 相关阅读:
    md转html,并带目录结构
    vue05
    vue04
    mysql索引及调优
    mysql的锁与事务
    python基本数据类型的操作
    redis集群
    docker 学习(四)
    MongoDB基本操作
    MongoDB基础
  • 原文地址:https://www.cnblogs.com/erickingxu/p/4249523.html
Copyright © 2011-2022 走看看