zoukankan      html  css  js  c++  java
  • C++模板的要点

    1.函数模板与普通函数的区别:

    普通函数可以进行自动类型转化,而函数模板不可以。

    举个例子

    //函数模板
    
    template<class T>
    void show(T  a,T b){
             cout<<a*b<<endl;
    }
    
    //执行
    
    show(1,'a');//编译器报错
    //普通函数
    
    void show(int a,int b){
           cout<<a*b<<endl;
    }
    
    //执行
    
    show(1,'a'); //编译成功  执行后显示97

    虽然函数模板可以自动识别类型,但是一旦识别之后,后面的T都必须替换成第一个类型,而且不可以进行强制类型转换。

    但是普通函数,虽然指定好了数据类型,但是可以进行强制类型转换

    2.类模板和函数模板调用的区别

    函数模板不需要显式指定类型就可以调用,但是类模板必须显式指定数据类型才可以调用

    //假设定义了一个类模板 Person
    
    Person<int> p(10);
    
    //假设定义了一个函数模板 saying
    
    saying a(10); //函数模板不需要显式指定数据类型,因为可以自动识别

    3.基类为模板类的派生类怎么写?

    必须要显式指定基类的数据类型

    //基类
    template <class T>
    class Foundation{
        T size;
    public:
        Foundation(T s):(size(s));
    }
    
    //派生类
    class Ki:public Foundation<int>{ //必须要显式指定 不然编译器不知道如何分配内存
    public:    
      Ki(int a):Foundation(a);
    }

    4.类模板较为规范的写法

    一个类Person

    应当在Person.h中定义类模板,声明模板内函数。

    而函数在Person.hpp中实现

    5.类模板中的友元函数该如何写?

    https://www.cnblogs.com/kiik/p/how_to_coding_friend_function_in_cpp_template_class.html

  • 相关阅读:
    (六)软件测试分工
    <C++>FILE和fstream
    <C#>序列化
    <C#>多线程
    <C++>面试
    <C#>面试
    <Linux>Linux系统命令
    <Linux>Linux基础知识
    <CAN>汽车诊断基础知识
    <C++>查询
  • 原文地址:https://www.cnblogs.com/kiik/p/10696972.html
Copyright © 2011-2022 走看看