您的位置:首页 > 编程语言 > C语言/C++

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

2016-03-13 21:14 295 查看
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.h
void 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: