C++函数与类模板(易理解版)


前言

就像做菜一样——模板是“菜谱”,具体类型是“食材” 😄


提示:以下是本篇文章正文内容,下面案例可供参考

一、函数模板:万能调料瓶

场景:你想做一个能装任何调料(类型)的调料瓶,比如盐、糖、辣椒...

传统方法:为每种调料单独做瓶子(重复代码)

// 装盐的函数
void addSalt(int amount) { ... }

// 装糖的函数
void addSugar(double amount) { ... }

函数模板:一个通用模板,自动适应调料类型 

template<typename T>  // 声明模板,T是占位符类型
void addSeasoning(T amount) { 
    cout << "加入" << amount << "克调料" << endl;
}

使用: 

addSeasoning<int>(5);      // 加入5克盐(自动生成int版本)
addSeasoning(3.14);        // 自动推导为double类型

二、类模板:多功能收纳盒

场景:想做一个能装任何物品(类型)的盒子,比如书本、玩具...

传统方法:为每种物品单独做盒子(冗余代码)

class BookBox {
public:
    BookBox(Book b) { ... }
};

class ToyBox {
public:
    ToyBox(Toy t) { ... }
};

类模板:一个通用盒子模板 

template<class ItemType>  // 同样用typename也行,习惯问题
class MagicBox {
private:
    ItemType content;
public:
    MagicBox(ItemType thing) : content(thing) {}
    void show() { 
        cout << "盒子里有:" << content << endl; 
    }
};

使用: 

MagicBox<string> bookBox("哈利波特");  // 必须显式指定类型<string>
bookBox.show();  // 输出:盒子里有:哈利波特

MagicBox<int> numBox(42);
numBox.show();   // 输出:盒子里有:42

三、模板的核心思想

  1. 避免重复:像复印机一样,写一次模板,编译器帮你生成各种具体版本
  2. 类型安全:比void*指针更安全,编译器会检查类型是否正确
  3. 延迟确定类型:用的时候才决定具体类型,灵活性高

四、生活对比
●函数模板 ≈ 万能开瓶器(能开任何形状的瓶盖)
●类模板 ≈ 乐高积木模具(能造出各种形状的积木)
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值