C++学习记录之模板篇

C++问题记录之模板: 


关于友元的注意事项:

1.友元关系不可传递。

2.友元关系的单向性。

3.友元声明的形式和数量不受限制。

友元只是封装的补充。友元的使用破坏了封装性。


友元函数没有this指针,为什么?

因为this指针是在指向类成员本身,但是友元函数并不在类里面,而是在类外面


友元函数是不能被继承的,就像父亲的朋友未必是儿子的朋友。

友元包括:友元函数,友元类,友元成员函数。


友元成员函数:


普通成员函数:C++ 普通成员函数本质上是一个包含指向具体对象this指针的普通函数,即c++类的普通成员函数都隐式包含一个指向当前对象的this指针。



因此类的静态成员函数和类的普通成员函数的区别是:

静态成员函数不包含指向具体对象的this指针;

普通成员函数包含一个指向具体对象的this指针。



静态注意事项:

1.静态数据成员必须单独初始化。

2.静态成员函数不能调用非静态成员函数和非静态数据成员。反之,非静态的成员函数可以调用静态的成员函数和静态的数据成员。

3.静态数据成员只有一份,且不依赖对象而存在。

4.类的静态成员函数没有this指针,故不能加const关键字。

sizeof求对象的大小。不会包含静态数据成员大小。

静态成员函数上不允许修饰符




5.运算符重载:给原有的运算符赋予新的功能。

本质:函数重载。

关键字:operator

一元运算符重载:-(负号)和++符号的重载。


-(负号)重载:

要返回*this,即对象的引用,如果需要返回的是自身,那么就用引用,如果返回的是临时变量,则不用引用。


++重载(前置和后置):

后置加加重载中,需要返回的是临时变量,前置加加中,返回的是自身的引用。


二元运算符重载(+):



函数中传入了隐形的参数*this,代表加号前面的对象。如:

当前的this指向的是coor1,返回的是临时变量temp

而对于友元函数重载来说,友元函数不存在this指针,只能传入两个参数。


Const可以写,也可以不写。


<<流运算符重载:

coutostream的是一个对象。

必须用友元函数,不能采用成员函数重载。因为流运算符重载函数的第一个参数必须是ostream的一个对象,不能是this指针(当前的对象),而作为成员函数是有this指针的。友元之后,便可以访问类中的数据成员。


[]索引运算符:







模板关键字:template   typename   class(不是定义类的,表明数据类型的)

STL:标准模板库

向量(vector):对数组的封装

特点:读取能在常数时间内完成。


迭代器(iteration):

List(链表):特点:数据插入速度比较快。使用方法和vector类似


Map(映射):

List不能直接使用list[i]来直接访问数据,故在循环中需要使用迭代器来对list中的数据进行遍历。

Map中没有push_back,用insert





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值