accelerated c++ 读书笔记--第十二章

1 对于内建类型,源对象和复制对象是相互独立的。

2 不需要析构函数的类,也不需要定义显式定义复制构造函数和赋值运算符函数;

3 c++自带的类型变量之间可以自动的转换;

4 类中定义类型转换要求都是双向的,其他转化该类,该类转化其他;

5 输入输出函数不能作为类的成员函数;

6 读入函数:从第一个非空格字符开始,到另一个空格字符或者文件结尾标志;

7 is.unget()函数就是取消最近一次从输入流读取的操作,仅一次。

8 只有成员函数才能访问私有成员数据,如果一定要访问,可以加存取器函数;

9 友元函数与成员函数一样具有对私有数据的读写权利,只要在前面加friend即可,友元函数在public和private里面都可以,效果一样,一般情况下,放在public前面集中统一放置;

10 写一个成员函数首先考虑:成员函数?操作数?返回值?具体要求?特殊要求?

11 二元运算符定义成非成员函数,复合赋值操作必须是成员函数

12 explicit关键字的构造函数,只能显式调用,隐式不可以

13 定义中需要称为对象结构的构造函数声明为explicit,而参数会变成对象内容一部分的就不需要explicit

14 指向void类型的指针,叫通用类型指针,可以指向任何类型

15 转换必须是类的成员函数,而且我们不能在内部类型和无代码类中写,所以只能在自己定义的类型中添加

16 istream可以作为一个判断的表达式,但是不能用来作为一个算数值来用

17  标准库string类提供了一个关于类型转换的解决办法:三个成员函数:

      1)s.str()把string对象复制到一个空格结尾的字符数组中,数组属于对象,用户不能随意删除指针,但是是临时的,一旦调用一个可以改变string的成员函数就会失效,用户执政短暂的使用返回一个指针或者指定内存。

      2)data()除了返回不是一个空字符结尾的字符数组,其他和str相同

      3)copy函数,参数为char*,int,把指定个数的参数放到char*所指的内存中去,内存由用户分配和释放

      str和data函数都存在隐式向const char *转换中存在缺陷。

18 类型转换:1 定义一个带耽搁参数的非explicit的构造函数来完成

                       2 也可以定义 operator type_name()  转换运算符,typename是要被转换的类型名称

                          转换运算符必须是类的成员函数。

19 一个类(模版非模版都可以)可以有模版成员函数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值