《面向对象程序设计——C++语言描述》学习笔记(二)

第二章 从C到C++

 2.1main函数

1.C++中须要写int main()不能只是main()ios

2.main()函数里面最后有一个return 0;函数

3.main()被启动代码调用,而启动代码是编译器添加到程序中的,是程序和操做系统的桥梁。测试

4.C++中main()中的括号空着与void是等效的,都表明不接受参数,在C中是不等效的,括号中空着没有参数表明对是否接受参数保存沉默。spa

2.2 预处理和iostream文件

1.#include <iostream>这句预处理在源代码编译以前把iostream文件的内容添加到程序中,也就是把源代码和iostream组合成一个复合文件,而后再进行编译。操作系统

2.include文件也叫头文件,由于通常包含再文件的开头位置。指针

2.3名字空间

1.能够消除因重名而致使的命名冲突。索引

2.域解析操做符ci

3.using声明只对名字空间某一项起做用。字符串

4.using namespace能够声明所有项get

2.4输入输出

1.cin表明标准输入,cout表明标准输出,cerr表明标准出错,其中cout是带缓冲的,cerr不带缓冲,但二者都是打印到屏幕。

2.cin会自动忽略空格,可是char也会忽略空格,以eof结束。

3.操纵符的使用,除了setw外,其余操纵符一旦使用将永久改变输入输出的状态,直到下一个操纵符对其进行改变。

2.5文件

1.必须包含头文件fstream,cin用ifstream代替,cout用ofstream代替。例如定义ifstream infile,可使用file.open来打开指定的文件。

2.文件使用结束后记得关闭文件,file.close来关闭文件。

3.能够测试文件的打开状态if (infile)

2.6常见特性

1.强制类型转换:static_cast,const_cast,dynamic_cast,reinterpret_cast

2.常数 const

3.数据类型bool:全部的关系操做符、相等操做符和逻辑操纵符都产生bool类型的结果值,而不是int类型。整数和指针表达式在须要的时候也能够产生bool类型的结果。好比cin << val; if (val){};操纵符boolalpha能够用来输出ture或false,反之可用noboolalpha来输出0或1。

4.枚举类型enum,主要用途是定义常量

5.定义变量:C++中能够在使用变量前进行声明和定义。

6.结构:C++中能够不用struct,同时能够包含数据成员、函数的实体等。

2.7string类型

1.无需处理null结束符,由系统自动处理,与c语言不同。

2.转换c语言风格的字符串用函数c_str()

3.getline

4.可使用+或+=来进行字符串的拼接

5.修改字符串使用erase,插入字符串可使用insert,替换字符串用replace,调换两个字符串可使用swap,提取子串用substr,查找子串用find,字符串比较用操做符便可,好比==,!=,>=,<=

2.8函数

1.函数原型:

  • C++中原型是必需的,没有参数的函数能够为空的参数列表,不用指明关键字void,并且返回类型必须指定。

2.引用:

  • 用&来标记,用来提供存储器的别名;
  • 除了不须要进行提取操做外,引用操做符和指针相似;
  • 引用调用能够将实际实参传递给函数;
  • 引用返回能够实现返回值不须要拷贝到临时存储空间,调用者能够直接访问返回值,同时这样的函数调用能够用在赋值语句左边,由于这样的方式返回的是实际单元.

3.内联函数:

  • Inline出如今函数声明而不是函数定义的部分
  • 编译器会将内联的函数的那部分实现代码直接替换主函数中调用的函数
  • 内联函数跟宏有点相似,可是不彻底同样,宏只是简单的文本替换,内联函数是须要编译器考虑语义。

4.函数默认参数

  • C++中容许调用函数时不提供参数的状况下采用默认值,这个默认值在函数声明中有赋初值。
  • 函数声明中没有默认值的参数放在前面,有默认值的参数放在后面,否则会出错。

5.函数重载

  • 一般用来针对有类似行为而数据类型不一样的操做提供一个通用的名称,这样用户就不须要考虑具体的函数参数的数据类型,直接使用便可,相似printf函数。
  • 函数名能够同样,可是参数个数和类型须要有所区别,具体的匹配过程不须要考虑。

6.函数签名

  • C++要求重载的函数须要具备不一样的签名,每一个函数必须用于独一无二的签名
  • 不一样的函数签名体如今函数名不一样、函数名相同但参数个数、顺序、数据类型不一样
  • 函数的返回值类型不能用来区分不一样的函数签名

2.9new和delete操做符

1.C++里面的new和delete跟C语言的malloc和free相似,可是C++中的new和delete不是库函数而是内建的操做符,而且是关键字。

2.int_ptr =new int; delelte int_ptr;或者int_ptr = new int[50]; delete[] int_ptr

3.不用把new和delete与malloc和free函数混合使用。

2.10例外处理

1.例外是由运行时错误致使的异常状况,好比索引越界或者new请求失败等。

2.抛出例外是在例外发生后,而后能够经过catch这个例外捕捉器来进行处理。

3.例外和不一样捕捉器之间的匹配是经过类型断定来进行的。

4.catch程序块能够包含一个参数或者由于特定类型的例外而直接输入catch程序块中。

5.try程序块、catch程序块、trow机制。

2.11补充材料

1.无名名字空间:相似C语言中的static,可使得一个顶层函数不能再定义该函数的文件外访问。只有与无名名字空间里面的函数在同一个文件才能够调用。

2.无名联合

3.成员选择符:—>,*

相关文章
相关标签/搜索