《C++ Primer Plus第六版》 学习笔记-第一章&第二章

mac2024-03-12  28

文章目录

第一章:预备知识C++三件法宝C++简史C语言OOP面向对象C++泛型编程程序创建的步骤C++标准 第二章:初步使用结构及main函数C++头文件新式类型: 无.h后缀与输入输出C++语句自定函数使用例子

第一章:预备知识

C++三件法宝

C++继承了C语言高效、简介、快速和可移植性的传统;C++面向对象(OOP)的特性带来一种全新的编程方法;C++模板特性提供另一种全新的编程方法——泛型编程;

C++简史

C语言

20世纪70年代早起,贝尔实验室的Dennis Ritchie 致力于开发UNIX操作系统。初始使用汇编这类的low-level语言进行编程,直接操作硬件。高级语言的诞生解决了低级语言的各种缺点,如效率等等,高级语言通过编译器(IDE)被编译为计算机内部二进制语言,这样,就可以在不同的平台上使用不同的编译器进行程序的二进制化。Ritchie希望有一种语言将低级语言的效率、硬件访问能力和该机语言的通用性、可移植性融合入在一起,于是C语言被开发出来。

C语言在早期和当时其他主流语言同样是过程性的(procedural),后来计算机科学家开发出一种更有序的编程方法——结构化编程(structured programming)。另一个新原则是自顶向下(top-down)的设计。 数据+算法=程序

OOP面向对象

虽然结构化编程理念提高程序的清晰度、可靠性,并且便于维护,但在编写大型程序时,仍然面临挑战,OOP提供一种新的方法,试图让语言来满足问题的要求,其理念是设计与问题的本质相对应的数据格式。

类是一种规范,它描述了新型的数据格式,对象是根据这种规范构造的特定数据结构。OOP的方法首先是设计类,但是不仅仅是数据和方法的合并,还包括其他一些方面,例如多态、信息隐藏、继承等。设计可靠、有用的类是一项艰巨的任务。

C++泛型编程

泛型编程(generic programming)是C++支持的另一种编程模式, 泛型是通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活的复用。

泛型的优点:   1.可以做到最大的代码重用、保护类型的安全以及提高了程序运行的性能;   2.可以创建集合类;   3.可以创建自己的泛型接口、泛型方法、泛型类、泛型事件和泛型委托。   4.可以对泛型类进行约束,以访问特定数据类型的方法。   5.关于泛型数据类型中使用的类型的信息,可在运行时通过反射获取。

// generic programming class Program { static void Main(string[] args) { int obj1 = 2; var task = new Task<int>(obj1); Console.WriteLine(task.obj); string obj2 = "这是个泛型"; var task2 = new Task<string>(obj2); Console.WriteLine(task2.obj); Console.ReadKey(); } } class Task<T> { public T obj; public Task(T t) { this.obj = t; } }

程序创建的步骤

源代码——编辑器——目标代码——链接程序(启动代码+库代码)——可执行代码

C++标准

C++11 & C++98 关于c++11的常用新特性,这篇博客里面有介绍C++11常用特性

第二章:初步使用

结构及main函数

#include 预处理器编译指令using namespace 编译指令运行C++程序时,函数是从main开始执行函数头(作为接口) int main(){ },返回值为int型函数名main(形参列表arguement/parameter list)无参数:int main() 与int main(void) 是一致的,表示函数都不接受任何参数void main() +省略renturn返回 :不返回任何值,但他不是当前标准强制的一个选项,所以在有的系统无法工作,应避免。

C++头文件新式类型: 无.h后缀与输入输出

iostream.h文件所定义的类和对象都是在全局空间中的,可以直接使用,然而iostream中的都是被放在了名称空间中,如果需要使用,则需要using namespace,然后可以直接使用cout。还有一种偷懒的方法,即using std::cout 这样也可以直接使用cout,不建议哈; 如果省略using namespace 命令,则需要在使用类的地方前面加上名字,例如std::cout; (C语言中只有string特殊,问题在于C++要兼容C的标准库,而C的标准库里碰巧也已经有一个名字叫做“string.h”的头文件,包含一些常用的C字符串处理函数,比如strcmp。 这个头文件跟C++的string类没有关系,所以并非“升级版本”,他们是毫无关系的两个头文件。) cmath: sqrt()

cout下 <<运算符的重载std 中的endl控制符换行,旧式换行\n。使用情况:cout<<“How are you?\n”<<“I am fine !”<<endl; \n可以减少输入量。

C++语句

变量的声明:声明了它的数据类型和变量名,保证在后续使用变量时不会因为拼写错误而出现问题(声明的原因)。赋值语句:从右到左

自定函数使用例子

#include <iostream> #include <cmath> void simon(int); //声明自定函数 一个参数且为int型 int simon1(int); int main(){ int a; simon(3); a = simon1(3); //返回为int,a为int return 0; } void simon(int n) { ....... }
最新回复(0)