• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
渴爱网のWebMaster 's Blog【Welcome to my website : KIIK.TOP 】
Go ahead man ! I just wanna achieve what i wanted man.
Tips:1.Do a excellent programmer who can hacking and build awesome program
     2.Became a designer who can make everything which nearby me looks like so charming.
博客园    首页    新随笔    联系   管理    订阅  订阅

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

posted @ 2019-04-12 16:42  kiik  阅读(181)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3