C++必知必会复习(一)

1、数据抽象:

对抽象数据类型设计步骤:类型名描述-类型操作(初始化即构造,清理即析构,复制,转换)-类型接口-实现类型

explicit关键字作用:

由于单参数构造函数其本身就默认了一个隐式转换,而explicit就是来抑制这种隐式转换的,例:

Cap hour=12; 

即为:

Cap temp(12); hour(temp);


2、多态

首先代码:

AmOption *d = new AmOption;

Option *b = d;

d->price(); 调用AmOption::price();

b->price(); 同上面调用

本质上类似于语法习惯:

第一句理解为:那个美国期权的当前值是什么?(美国类似于AmOption)

第二句理解为:那个期权的当前值是什么?(仍然说的是美国期权)

代码中操作,如果代码中出现一个AmOption对象,我们只需要知道Option多态代码就可以操作AmOption对象了。


3、STL

基本思想就是:容器与容器之间无需彼此了解,通过迭代器(类似于指针)实现。

指针:

int i=1;

int *p =&i;  &取地址,*p指向引用指针变量值

cout <<*p<<endl;解引用

同样,迭代器也可以对其解引用。学习了STL库后,觉得很有必要大范围使用。


4、引用是别名而非指针

引用是现有对象的别名。用对象来初始化引用后,对象的名字或者引用的名字都可以指向该对象。

引用和指针的区别:

1、不存在空引用。

2、所有引用必须初始化。(初始化的对象必须存在!!)

3、一个引用永远指向初始化的那个对象。

注意:

1、一个非常量的引用是不可以用字面值或者临时值初始化,如

double &d = 12.3;   //错误

2、一个指向常量的引用可以,如:

const double &d = 12.3;//正确


5、数组形参:

注意:C++中不存在数组形参,数组传入时,只是传入其首元素的指针。

例1:

void average(int ary[]);  //形参为ary,是一个int *

void average(int (&ary)[12]);  //形参同样是数组,含有特定数量元素(12个):


例2:

void average(int (&ary)[n]);   

||

void avergae(int ary[], int size);   //size即为n,为数组个数


例3:

void process(int (*ary)[20]); //一个指针,指向含有20个int元素的数组


例子4:(二维数组)

template<int n,int m>

inline void process(int (&ary)[n][m])

{ process_2d(&ary[0][0], n, m);}

 void process_2d(int *a, int n,int m)

{

for(int i=0; i<n; ++i)

  for(int j=0; j<m; ++j)

     a[i*m+j]= 0;

}


猜你喜欢

转载自blog.csdn.net/u014252478/article/details/80118203