随便写写C++,看看Essential C++

来源:互联网 发布:知乎 可怕 编辑:程序博客网 时间:2024/06/02 06:59

1.所谓“类”,是用户自定义的数据类型,class机制让我们得以将数据类型加入到我们的程序中,并有能力识别他们。class的定义一般分为两步:一是在头文件中声明,另一文件是程序代码文件,包含了这些操作行为的实现内容。

2.初始化可以使用赋值符号”=” : int num_tries = 0;
也可以使用”构造函数语法” : int num_tries(0); 因为如果对象不是内置类型或者对象需要多个初值,就需要这种多值初始化函数法了。

3.不改变的值应该加上const ,以防止 a==1这种判断语句错写成 a=1 而发现不了。

4.

const int seq_cnt = 6;vector<int> fibonacci,lucas,pell,triangular,square,pentagonal;vector<int> *seq_addrs[seq_cnt] = {    &fibonacci,&lucas,&pell,    &triangular,&square,&pentagonal};//seq_addrs是一个array,所持有的值是vector<int> *的值。

5.点操作符可以用来选择我们的对象所做的操作,但是用指针时,就要使用 -> ,

vector<int> *pv = 0;vector<int> f;pv = &f;if(!pv->empty()){}// 

6.

int *pi=0;pi = new int(1024);pi = new int[24];//heap中都是未经初始化的delete pi;//不经过delete,不会释放,造成内存泄露

7.P53

//头文件声明其中指定了参数默认值//让我们称此头文件为NumericSeq.hvoid display(const vector<int>&,ostream&=cout);//程序代码包含上述头文件,//函数定义处,并没有指定参数的默认值#include "NumericSeq.h"void display(const vector<int> &vec,ostream &os){    for(int ix = 0;ix < vec.size():++ix)        os << vec[ix] << ' ';    os << endl;}

8.在函数前面加上inline只是对函数的一个要求,并不是强制的。

9.重载是指 参数列表 不同(个数或类型)

10.

bool seq_elem(int pos,int& elem,              const vector<int>* (*seq_ptr)(int)){//调用一个函数指针}

11.泛型算法系通过function template技术,达到”与操作对象的类型相互独立“的目的。而实现”与容器无关“的诀窍,就是不要直接在容器身上进行操作,而是借由一对iterator (first 和 last),标示我们要进行迭代的元素范围。

12.*(array + 2)如果array是指针,指的是地址1000,那么array+2是等于1000+sizeof(ptr)*2

P72/200

0 0