C++ primer(第四版)读书笔记3

  • what explicit构造函数:用单个形参的构造函数,如果加了explicit关键字,则无法完成从形参类型到该类型的一个隐式转换。

通常单个形参的构造函数应该声明为explicit,除了拷贝构造函数。不过,拷贝构造函数和赋值构造函数除非需要,一般也设为private
explicit则只能在内部声明,而不能在外部声明

声明为explicit后,尽管不能再隐式创建对象,但可以显式创建对象,例如:item.same_isbn(Sales_item(null_book))

  • 类的前向声明 p374
可以声明一个类而不定义它
class Screen;
这个声明,有时称为前向声明,在程序中引入了类类型的Screen。在声明后,定义之前,类Screen是一个不完全类型,即已知Screen是一个类型,但不知包含哪些成员
不完全类型只能以有限方式使用。不能定义该类型的对象。 不完全类型只能用于定义指向该类型的指针引用 ,或者 用于声明(而不是定义)使用该类型作为参数类型或返回类型的函数

在创建类的对象之前,必须完整地定义该类。必须定义类,而不是声明类,这样,编译器就会给类的对象预定相应的存储空间。同样的,在使用引用或指针访问类的成员之前,必须已经定义类。


  • static成员 p400-401
static成员不是任何对象的组成部分,所以static成员函数不能被声明为const
static不能被声明为虚函数
static数据成员必须在类定义体的外部定义(正好一次)。不像普通数据成员,static成员不是通过类构造函数进行初始化,而是应该在定义时进行初始化。
(保证对象正好定义最好办法,就是将static数据成员定义放在包含类的非内联成员函数定义的文件中)
static关键字只能用于类定义体内部的声明中,定义不能标示为static


  • 声明与定义的语法
类内部定义的成员函数默认为inline;如果在类外定义该类的成员函数,则只需在任意一处声明为inline
类外定义的const的成员函数,则需两处都声明为const  p369
explicit则只能在内部声明,而不能在外部声明              p394
仅仅在声明的时候需要使用virtual关键字,定义时并不需要。如果一个函数在基类中被声明为virtual,那么在它所有的派生类中它都是virtual的  <<c++编程思想>>p356

  • 任意存储string的size操作结果的变量必须为string:size_type类型。特别重要的是,不要把size的返回值赋给一个int变量
  • string类类型和许多其他库类型都定义一些配套类型。通过这些配套类型,库类型的使用就能与机器无关。size_type就是这些配套类型中的一种。它定义为与unsigned型(unsigned int 或 unsigned long)具有相同的含义,而且可以保证足够大能够存储任意string对象的长度。虽然我们不知道size_type的确切类型,但可以知道它是unsigned型。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值