CPP 2. 开始学习CPP 2020-10-10 浏览量 737 暂无评论 # 第2章 开始学习CPP ## 2.1. 进入C++ ```cpp #include iostream int main(){ using namespace std; cout << "Come up and C++ me some time."; cout << endl; cout << "You won't regret it!" << endl; return 0; } ``` Output: > Come up and C++ me some time. You won't regret it! - 函数头 函数头“int main()”描述了函数与调用它的函数之间的接口,“int”表示函数的返回类型,“()”中的叫做形参列表,空括号意味着“main()”函数不接受任何参数,在C++中,空括号与在括号中使用“void”等效。 - 注释 C++中使用“//”进行单行注释,也能够识别C注释,C注释包括在符号“/*”和“*/”之间,可以跨越多行。 - C++预处理器 这里只讨论处理名称以“#”开头的编译指令。“#include <iostrean>”将iostream文件的内容添加到程序中,实际上,iostream文件的内容将取代程序中的代码行“#include <iostrean>”,原始文件没有被修改,而是将源代码文件和iostream组合成一个复合文件,编译的下一阶段将使用该文件。 - 头文件名 头文件也叫包含文件。C++对老式C的头文件保留了扩展名h,而C++头文件则没有扩展名。有些C头文件被转换为C++头文件,这些文件被重命名,去掉了扩展名h,并在文件名称前面加上前缀c(表明来自C语言)。对于纯粹的C++头文件,去掉h不只是形式上的变化,没有h的头文件也可以包含名称空间。 - 名称空间 为什么要使用名称空间呢?为了处理这样的问题:在同时使用两个封装好的产品时,它们都包含一个名为wanda()的函数,使编译器不知道使用哪个版本.如果不使用using编译指令,可以这样进行编码:std::cout << "Come up and C++ me some time.";std::cout << std::endl;比起直接使用using namespace std使得std名称空间中的所有名称都可用,更推荐只使所需的名称可用(大型项目时),可以通过使用using声明来实现:using std::cout; // make cout available注意:仅当头文件没有扩展名h时才是这样。 - C++源代码的格式化 标记:一行代码中不可分割的元素,如“int、(、)”;空白:空格、制表符、回车; - C++源代码风格: - 每条语句占一行; - 每个函数都有一个开始花括号和一个结束花括号,这两个花括号各占一行; - 函数中的语句都相对于花括号进行缩进;与函数名称相关的圆括号周围没有空白(为了帮助区分函数和一些也使用圆括号的C++内置结构,如循环)。 - 空行将声明语句与程序的其他部分分开(C常用的方法,C++中不那么常见); - 通常把函数原型放在main()定义之前; - 待补充... ## 2.2. C++语句 ```cpp #include iostream; int main(){ using namespace std; int carrots; carrots = 25; cout << "I have "; cout << carrots; cout << " carrots."; cout << endl; carrots = carrots - 1; cout << "Crunch, crunch. Now I have " << carrots << " carrots." << endl; return 0; } ``` Output: > I have 25 carrots. Crunch, crunch. Now I have 24 carrots. - 声明语句和变量 声明有定义声明和引用声明。程序中的声明语句叫做定义声明,它使编译器为变量分配内存空间,而引用声明命令计算机使用在其他地方定义的变量。此处的“int carrots;”为定义,它提供了需要的内存以及该内存单元的名称。 - 赋值语句 赋值语句将值赋给存储单元。carrots = 25;同C一样,可以连续使用赋值运算符,且各变量的内存空间是独立的。 注意:与python不同,C++的连续赋值的变量是独立的,因为事先进行了声明,已经开辟了内存空间,而python连续赋值的变量指向同一个内存空间,修改其中一个变量,另一个变量的值也会变。 - 返回语句 ### 2.3. 其他C++语句 - 消息语句:cout - 消息语句:cin - 类 对象之于类就像变量之于类型,类描述了一种数据类型的全部属性(包括可使用它执行的操作)。 - 函数调用 - 函数原型 ### 2.4. 函数 使用函数前要进行函数声明,如double sqrt(double);,可将函数声明写在头文件中,然后包含头文件(注意头文件和库文件的区别)。 - 阅读全文 -
CPP 1. 预备知识 2020-10-09 浏览量 674 暂无评论 # 第1章 预备知识 ## 1.1 C++简介 C++融合了3种不同的编程方式:C语言代表的过程性语言、C++在C语言基础上添加的类代表的面向对象语言、C++模版支持的泛型编程。 ## 1.2. C++简史 ### C语言和C++的区别: - C语言是面向过程的编程语言,它强调编程的算法方面,具有使用结构化编程的特性; - C语言的设计原则是自顶向下,即将大型程序分解成小型、便于管理的任务; - C++是面向对象(OOP)的编程语言,它强调编程的数据方面,其理念是设计与问题的本质特性相对应的数据格式,并用类来描述这种新型数据格式,对象是根据这种规范构造的特定数据结构。通常,类规定了使用哪些数据来表示对象(数据)以及可以对这些数据执行哪些操作(方法); - 从低级组织(如类)到高级组织(如程序)的处理过程叫做自下向上的编程。 泛型编程:强调独立于特定数据类型,使用一个泛型函数处理不同数据类型的同一任务。 ## 1.3. 可移植性和标准 可移植性的两个障碍: 1. 硬件:硬件的特定程序是不可移植的(将依赖于硬件的部分放在函数模块中可以最大限度地降低可移植性问题,这样只需要重新编写这些模块即可); 2. 语言上的差异:不同计算机语言(XP、Linux)的语言习惯,为了统一语言工作方式,C++98/C++2003、C++11等标准应运而生。 ## 1.4. 程序创建的技巧 具体的步骤大体如下:编写源代码--编译源代码,生成目标代码--链接目标代码与其他代码(包括一些标准的启动代码),生成可执行代码 ### 常见的编译器及简单用法: - UNIX:cfront(已于1993停更),GNU g++。 CC xx.C(会删除过程中的xx.o,默认生成a.out); CC xx1.C xx2.C(会保留过程中的xx1.o、xx2.o,便于后续修改再编译,如CC xx1.C xx2.o); - Linux:g++。 g++ xx.cxx(会删除过程中的xx.o,默认生成a.out); g++ xx1.cxx xx2.cxx(会保留过程中的xx1.o、xx2.o,便于后续修改再编译,如CC xx1.C xx2.o); - Windows命令行:Cygwin,MinGW。 g++ xx.cpp(会删除过程中的xx.o,默认生成a.exe); - Windows编译器:Microsoft Visual C++。 Compile, Build, Make, Build All, Link, Execute, Run, Debug。 - 阅读全文 -