精华内容
下载资源
问答
  • C++类模板成员函数类外实现 成员函数类外实现 成员函数实现 学习目标: 能够掌握类模板中的成员函数类外实现 #include <iostream> #include <string> using namespace std; //类模板成员函数类外实现...

    C++类模板成员函数类外实现 成员函数类外实现 成员函数实现

    学习目标:
    能够掌握类模板中的成员函数类外实现

    #include <iostream>
    #include <string>
    using namespace std;
    
    //类模板中成员函数类外实现
    template<class T1, class T2>
    class Person
    {
    public:
    	//成员函数类内声明
    	Person(T1 name, T2 age);
    	void showPerson();
    public:
    	T1 m_Name;
    	T2 m_Age;
    };
    
    //构造函数类外实现
    template<class T1, class T2>
    Person<T1, T2>::Person(T1 name, T2 age)
    {
    	this->m_Name = name;
    	this->m_Age = age;
    }
    
    //成员函数类外实现
    template<class T1, class T2>
    void Person<T1, T2>::showPerson()
    {
    	cout << "姓名: " << this->m_Name << " 年龄: " << this->m_Age << endl;
    }
    void test01()
    {
    	Person<string, int>p("Tom", 20);
    	p.showPerson();
    }
    int main()
    {
    	test01();
    	return 0;
    }
    //类模板中成员函数类外实现时,需要加上模板参数列表
    

    总结: 类模板中成员函数类外实现, 需要加上模板参数列表

    C++类模板成员函数类外实现 成员函数类外实现 成员函数实现

    展开全文
  • 模板成员函数类外实现

    千次阅读 2019-07-02 13:40:13
    模板中的成员函数类外实现# 测试代码 #include <iostream> #include <string> using namespace std; //类模板成员函数类外实现 template<class T1, class T2> class Person { public: //...

    类模板中的成员函数类外实现

    测试代码

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    //类模板中成员函数类外实现
    template<class T1, class T2>
    class Person {
    public:
    	//成员函数类内声明
    	Person(T1 name, T2 age);
    	void showPerson();
    
    public:
    	T1 m_Name;
    	T2 m_Age;
    };
    
    //构造函数 类外实现
    template<class T1, class T2>
    Person<T1, T2>::Person(T1 name, T2 age) {
    	this->m_Name = name;
    	this->m_Age = age;
    }
    
    //成员函数 类外实现
    template<class T1, class T2>
    void Person<T1, T2>::showPerson() {
    	cout << "姓名: " << this->m_Name << " 年龄:" << this->m_Age << endl;
    }
    
    void test01()
    {
    	Person<string, int> p("Jerry", 20);
    	p.showPerson();
    }
    
    int main() {
    
    	test01();
    
    	system("pause");
    
    	return 0;
    }
    

    测试结果

    在这里插入图片描述

    总结

    • 类模板中成员函数类外实现时,需要加上模板参数列表
    展开全文
  • C++中模板类中的成员函数以及模板函数类外定义

    千次阅读 多人点赞 2020-03-05 18:45:07
    但是模板类里的成员函数和模板函数与普通的成员函数在类外定义不同。 先定义一个模板类以及成员函数和模板函数: 接下我们就在类外定义函数: 1.构造函数 2.成员函数 3.模板函数 以上就是模板类中的成员函数以及...

    在C++中,类中的成员函数可以在类外完成定义,从而显得类中的成员函数看起来简洁明了。但是模板类里的成员函数和模板函数与普通的成员函数在类外定义不同。
    先定义一个模板类以及成员函数和模板函数:
    在这里插入图片描述
    接下我们就在类外定义函数:
    1.构造函数
    在这里插入图片描述
    2.成员函数
    在这里插入图片描述
    3.模板函数
    这里是
    以上就是模板类中的成员函数以及模板函数在类外定义的三种形式。

    展开全文
  • 说明: template是一个声明模板的关键字,表示声明一个模板关键字class不能省略,如果类型形参多余一个 ,每个形参前都要加class 可以包含基本数据类型可以包含类型。 请看以下程序: [cpp] view ...

     1函数模板的写法

    函数模板的一般形式如下:

    Template <class或者也可以用typename T>

    返回类型 函数名(形参表)
    {//函数定义体 }

    说明: template是一个声明模板的关键字,表示声明一个模板关键字class不能省略,如果类型形参多余一个 ,每个形参前都要加class <类型 形参表>可以包含基本数据类型可以包含类类型。

    请看以下程序:

    [cpp]  view plain  copy
    1. #include <iostream>  
    2. using std::cout;  
    3. using std::endl;  
    4. //声明一个函数模版,用来比较输入的两个相同数据类型的参数的大小,class也可以被typename代替,  
    5. //T可以被任何字母或者数字代替。  
    6. template <class T>  
    7. T min(T x,T y)  
    8. {  
    9.     return(x<y)?x:y;  
    10. }  
    11. void main( )  
    12. {  
    13.   
    14.      int n1=2,n2=10;  
    15.      double d1=1.5,d2=5.6;  
    16.      cout<< "较小整数:"<<min(n1,n2)<<endl;  
    17.      cout<< "较小实数:"<<min(d1,d2)<<endl;  
    18.      system("pause");  
    19. }  

    1 、模板类和重载函数一起使用
         两者一起使用时,先考虑重载函数,后考虑模板类,如过再找不到,就考虑类型转换,可能会带来精度的变化。

    [cpp]  view plain  copy
    1. #include "iostream"  
    2. using namespace std ;  
    3.   
    4. //函数模板   
    5. template <class T>    
    6. const T MAX(T a , T b)  
    7. {  
    8.     printf("%s\n" , "template") ;  
    9.     return (a > b) ? a : b ;       
    10.   
    11. }  
    12.   
    13. int MAX(int x , int y)  
    14. {  
    15.     printf("%s\n" , "int int" );  
    16.     return (x > y) ? x : y ;       
    17. }   
    18.   
    19. int MAX(char x , int y)  
    20. {  
    21.     printf("%s\n" , "char int" );  
    22.     return (x > y) ? x : y ;       
    23. }   
    24.   
    25. int MAX(int x , char y)  
    26. {  
    27.     printf("%s\n" , "int char" );  
    28.     return (x > y) ? x : y ;      
    29. }   
    30.   
    31. int main(void)  
    32. {    
    33.     int a = 3 , b = 5 ;  
    34.     char x = 'x' ;   
    35.     double c = 3.4  ;  
    36.     cout<<MAX(a , b)<<endl ;     //调用重载函数   
    37.     cout<<MAX(c , b)<<endl ;     //无对应的重载函数,则调用模板   
    38.   
    39.     cout<<MAX(a , x)<<endl ;     //重载函数   
    40.     cout<<MAX(x , a)<<endl ;     //重载函数   
    41.     cout<<MAX(c , a)<<endl ;  
    42.     cout<<MAX(a) ;  
    43.     system("pause") ;   
    44.     return 0 ;     
    45. }  

    2 、类模板
        (1)类模板的具体格式
            template <class T>
            class A
           {

           }
          在类定义体外定义的成员函数,应该使用函数模板。

    [cpp]  view plain  copy
    1. /* 
    2. 类模板,但是在类外定义成员函数的时候,需要使用函数模板 
    3. */  
    4. #include <iostream>  
    5. using namespace std ;  
    6. template <class T>  
    7. class Base  
    8. {  
    9. public :      
    10.     T a ;  
    11.     Base(T b)  
    12.     {  
    13.         a = b ;      
    14.     }     
    15.     T getA(){ return a ;} //类内定义   
    16.     void setA(T c);  
    17. };  
    18.   
    19. template <class T>   //模板在类外的定义   
    20. void  Base<T>::setA(T c)  
    21. {  
    22.     a = c ;  
    23. }  
    24.   
    25. int main(void)  
    26. {  
    27.     Base <int>b(4);  
    28.     cout<<b.getA()<<endl;   
    29.   
    30.     Base <double> bc(4);  
    31.     bc.setA(4.3);  
    32.     cout<<bc.getA()<<endl;   
    33.     system("pause");   
    34.     return 0 ;      
    35. }  

    注意成员函数在类外定义的情况。
    3 、模板类
      主要指的是 STL 模板类


    展开全文
  • 因为很多书都没讲到这种情况, 曾经有这个问题但一直没答案,所以我一直以为模板类模板成员函数只能在内定义,直到我在某个开源代码里看到原来要加两个 template<> ............ (T_T) template<...
  • 题目要求: 在以上程序(第2章习题第2小题)基础上进行修改: 在类体内声明成员函数,在类外定义成员函数。 ——谭浩强的《C++面向对象程序设计》第2章习题第3小题
  • 2、每个成员函数模板外定义的时候前面都要有类模板的声明,注意是每个。 #include&lt;iostream&gt; using namespace std; template&lt;class numtype&gt; //类模板声明 class compare { public:...
  • #include "stdafx.h"  ...//---------------------------------情况1: 模板中成员模板体内定义方法:-------------------------------------------- template//模板 class A { public
  • C++函数模板(模板函数)详解

    万次阅读 多人点赞 2019-07-04 16:03:01
    C++函数模板(模板函数)详解定义用法:函数模板的原理延申用法2.1为什么需要模板2.2单个模板语法2.3继承中的模板语法案例1:案例2:2.4模板的基础语法2.5模板语法知识体系梳理1.所有的类模板函数写在的...
  • C++类模板成员函数模板写法收藏

    千次阅读 2017-09-18 18:01:36
    这几天本来想将Lua_Tinker移植到Linux上去的,但是由于VC中的模板写法与gcc中的模板写法有些不同之处,比如下面一段代码:  struct pop_   {  template   static T invoke(lua_State *L,
  • C++模板函数 & 模板

    2017-12-18 16:36:32
    C++ 模板函数 & 模板
  • (一)C++类模板模板类: ...2)中的数据成员类型,或成员函数的参数类型,返回值类型不定。 (2)类模板的范例: template class Test{ private:  T n;  const T i;  static T cnt; pub
  • 今天写STL中 rb_tree 的时候意外的发现一个问题:模板类模板成员函数不能在定义外部进行特化,特化必须放在定义内,否则将报错:error C2244: “X::test”: 无法将函数定义与现有的声明匹配 经过写如下的...
  • 模板类成员函数特化写法

    千次阅读 2011-07-13 13:02:22
    昨天有对模板类的函数成员特化需求,目的是为了对不同模板参数实现不同的操作,结果在写过程中碰到already defined的问题(貌似是模板新手最容易碰到的问题了),类外成员函数和同在类外的特化版本成员函数冲突了...
  • 习题 9.12 将例9.14改写为在类模板外定义各成员函数。 代码块: #include &lt;iostream&gt; using namespace std; template &lt;class numtype&gt; class Compare { public: Compare(numtype a...
  • 函数模板( Function templates) 模板(Templates)使得我们可以生成通用的函数,这些函数能够接受任意数据类型的参数,可返回任意类型的值,而不需要对所有可能的数据类型进行函数重载。这在一定程度上实现了宏...
  • C++ 函数模板&类模板详解

    千次阅读 2018-12-02 16:32:37
    模板函数 模板&amp;模板 必须区分概念 函数模板是模板,模板函数时具体的函数 模板是模板,模板时具体的 由函数模板实例化而得到的函数称为模板函数模板实例化得到的叫模板   一.函数...
  • c++模板类如何定义模板成员函数

    千次阅读 2011-09-25 19:41:36
    最近跟网上一个解决一个模板问题 其实他在用g++编译器写模板定义成员...特例模板不可以在类外定义,不管是在头文件还是cpp文件都要报错,然后跟他说让他写在类中(当时不知道他在用g++编译器), 于是悲剧的问题出来
  • 类模板成员函数

    千次阅读 2007-01-17 17:26:00
    模板成员函数1。...这是就和T建立了联系,这时就能说明即使函数体内不涉及T类型,它也是个函数模板,因为由不同T类型,是不同的函数类型(因为域概念是成员函数类型的一部分)(在类外的定义时需写
  • 我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载...
  • c++模板类成员函数的写法

    千次阅读 2013-06-06 20:49:32
    今天写了个模板类,按照一般的写法,把的声明写在.h头文件里,把实现写在cpp文件里,不过发现模板类成员函数如果写在声明的话和一般的写法有点不一样,写作用域的时候必须把模板参数也加上。 我的声明写...
  • 简述类模板函数模板template (typename T)

    千次阅读 多人点赞 2019-09-08 14:48:50
    相信很多刚入门c++的同学在学数据结构或者查看大佬的代码中,我们都会看到: template <typename T> 类模板; ...函数模板: ...本文只是简单说明一下我们使用类模板函数模板需要注意什么(因为我...
  • 模板模板函数在dll导出

    千次阅读 2016-07-04 14:30:00
    模板模板函数在dll导出
  • 模板类成员函数特例化写法

    千次阅读 2018-09-27 09:30:42
    原因: 在文件calibdt_array.h中定义了Array,并声明了函数ReleaseByOwner(T **data())如下: 仅仅是声明,并未进行实现,同时在文件ring_circle_board_detector.h中进行了的特例化实现,即对Array中R....
  • C++类模板成员类外定义方法

    千次阅读 2019-09-05 16:18:23
    举个栗子: template<typename T>//代表这是个类模板 class BinaryTree { public: BinaryTree(); ~BinaryTree();... //类模板成员定义 } private: }; /*类模板的构造函...
  • C++模板类模板函数模板详解都在这里了

    万次阅读 多人点赞 2019-07-13 21:45:39
    C++模板类模板函数模板详解一、引言二、函数模板1、定义2、调用3、多个虚类型三、类模板1、定义2、调用四、函数模板五、作为数据类型传入六、类模板与继承七、类模板与友元 一、引言 在写排序算法时,如果...
  • 类模板比较好理解: template class TEP { public:  void fun();  virtual void foo();  TEP();  TEP(const TEP&src);  template  TEP(const TEP&src);  TEP&operator=(const TEP&rvl);

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,680
精华内容 20,272
关键字:

成员模板函数类外