c++primer学习笔记1

为了激励(鞭策)自己每天的学习,那就记录下好了。刚好没有太多可以敲代码的地方,很多概念的东西不记一下感觉没学过一样。那么今天学习的是函数模板、函数重载、单独编译、作用域和链接。

重载的特性是函数名相同,至少有一个形参类型不同或形参数目不同,返回类型可以不同。

函数模板就是

template<typename T>swap(T &a,T &b){
    T temp=a;
    a=b;
    b=temp;
}

T可以是任何类型的,在使用时会根据数据类型自动变化。

然而会有例如数组等无法使用的情况,这时需要显式具体化。

struct student{
    string name;
    int num;
};
template<>swap<student>(student &a,student &b){
    student temp;
    ...;
}     

还有显式实例化

template swap<student>(student &a,student &b);//不明白作用

然后编译器会自动选择最合适的函数模板来使用,当有同样合适度的函数时会报错ambiguous(二义性)。

/*******************************************************************************************************************************/

再然后是关于头文件的讲解,我也终于明白了一件以前一直不明白的事情:

为什么.h文件中要写#ifdef...#endif?

因为这是为了防止重定义,.h文件中是各种结构、类、函数的申明,如果将头文件重复引用,就会引起这个问题。

这时就使用

#ifndef HEADFILE_H_
#define HEADFILE_H_
...//程序内容

#endif

这种方法,没定义时会定义一个该文件名称,当定义之后就不再进入程序部分。

找到一个好理由结束今天的学习,不过算是一个好的开始,需要记录的话对我来说学习效率高太多了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值