《Accelerate C++》读书笔记(三)

20、模板函数可以使不同类型的对象享有共同的行为特性。程序只在编译期间才判断出具体的参数类型,并将其实例化。

21、迭代器可以满足对容器不同的访问需求,STL总共定义了五种迭代器类型:顺序只读、顺序只写、顺序读写(正向迭代器)、可逆访问(双向迭代器)、随机访问。

22、容器中使用不对称的开闭区间组合,即end指向区间最后一个元素的后面的位置,如此做有以下几个优点:A:若区间为空区间,则可以很方便的通过判断start和end所指位置是否相等来判断,倘若将end设置为表示最后一个元素,则需要对空区间设置独特的表示方式。B:可以方便的表示区间之外的值,且该值可以作为异常值返回,避免自定义一个异常返回值。

23、C++的类型分两种:内部类型和外部类型,内部类型有:char\int\double;外部类型有:string/vector/stream.

24、const放在函数后,表示该函数为常成员函数,不允许更改数据成员的值,同时也不能调用能改变数据成员值的函数。

例子:double grad() const;

25、函数或变量前面添加::,若前面不加具体类名或空间名,则默认调用同名的全局函数。例如:

#include<iostream>

using namespace std;

int a=1;

int main()

{

  int a=3;

  cout<<::a<<endl; //1

  cout<<a<<endl; // 3

  return 0;

}

26、struct的成员默认(缺省权限)为public,而class的成员默认为private,另外struct不可以定义成员函数。Union中所有成员共用同一块存储空间,大小由最大的成员决定,一般为最大变量长度的整数倍。

27、系统的存储模式分为两种:大端模式和小端模式,大端模式中,字数据的高字节存储在低地址中,而低字节存储在高地址中,小端对齐则高字节存储在高地址中,低字节存储在低地址中。判断系统的存储模式,可以利用联合体union的特点,其中所有数据均从低地址开始存储。判断函数如下(返回1则为小端,0则为大端):

int checkSystem( )

{

   union check

   {

      int i;

      char ch;

   } c;

   c.i = 1;

   return (c.ch ==1);

}

28、C++类成员的初始化分以下几种情况:1、若数据为外部类型,且有一个及以上构造函数,则根据构造函数来初始化。2、若数据为内部类型,则数值初始化为零,缺省初始化则为未定义的值。3、若外部类型没有构造函数,则对其中的数据成员进行相应的数值或缺省初始化。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值