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

    }

  • 相关阅读:
    thread_Semaphore信号量
    c 语言文本文件判断是否到达结尾的问题
    c语言快速排序算法(转)
    c语言双向循环链表
    gtk+学习笔记(八)
    c语言循环链表的问题
    linux c获取本地时间
    gtk+学习笔记(七)
    gtk+学习笔记(六)
    gtk+学习笔记(五)
  • 原文地址:https://www.cnblogs.com/erickingxu/p/4249523.html
Copyright © 2011-2022 走看看