栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++核心编程(二十八)模板

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++核心编程(二十八)模板

模板分为两种:
(1)函数模板
(2)类模板

(1)函数模板的注意事项
1)函数模板和普通函数重载的时候,使用默认参数调用,默认调用普通函数
2)如果显示声明模板参数,则使用函数模板调用
3)模板函数的函数参数如果传入对象是对象,那么需要对函数做具体化声明
4)当函数模板和普通函数同名,但是参数不同,能不强转调用的优先调用。

(2)类模板
1)类模板中成员函数的创建时机:函数在被调用的时候才被创建,普通类中的成员函数是一开始就被创建
2)类模板的调用需要显式调用,不能隐式调用
3)对于类模板的调用有3种方式:指定参数类型传入,参数模板传入,类模板传入
4)

#include
using namespace std;
template
class person{
public:
   T1  age;
   T2 name;
   person(T1 age,T2 name)
   {
        this->age=age;
        this->name=name;
   }
   void fun()
   {
    cout< &p)//指定参数类型传入
{
    p.fun();

}

template//参数模板化传入
void print_2(person&p)
{
    p.fun();
    cout<<"T1的类型:"<
void print_3(T &p)//将整个类模板化传入
{
    p.fun();
     cout<<"T的类型:"<

    person  p(123,"八戒");
    print_1(p);
    print_2(p);
    print_3(p);
}

int main()
{

    test01();


}

类模板的继承和类外实现成员函数:

#include
using namespace std;
template
class base
{

public:
    T age;
};

template //在继承的时候如果父类是类模板,那么继承的时候需要对类模板传入参数列表,如果想要灵活运用,子类中也需要创建类模板
class son:public base
{
public:
    T1 age;
     son(T1);
    void show(T2);
};
template
son::son(T1)
{

}
template
void son::show(T2)//类外实现类模板成员函数
{

cout<<"类模板成员函数"<
    sonp(1);
        p.age=100;
        p.base::age=20;
        cout< 

在对类模板分文件编写的时候报错解决方法
1)将类的声明和实现写到一起将文件命名为.hpp后缀的文件
2)直接包含.cpp源文件。
也就是说声明和实现不要分文件写最好

类模板中友元函数的类外实现
1)声明类
2)实现友元函数
3)在定义的时候加<>

#include
using namespace std;
template
class person; //先声明类


template
void show(person &p)//实现友元全局函数
{
    cout<
class person
{
    friend void show<>(person &p);//友元全局函数的定义

public:
        T age;

};


int main()
{

    person p;
    p.age=100;
    show(p);


}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1011477.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号