知识屋:更实用的电脑技术知识网站
所在位置:首页 > 科技

c++程序设计(面向对象进阶)课程笔记

发表时间:2022-03-25来源:网络

快速c语言转成c++

目录

快速c语言转成c++

C++概述

C++演变过程

 C++的编程范式

 C++开发工具

C++程序的编译流程

namespace(命名空间/名字空间)

#define 、 typedef 和 using

C++中常见错误

C++语法

输入和输出

Reference(引用)

空指针(nullptr)

动态内存管理:分配/释放

数据类型

booll类型

类型转换

类型系统

自动类型推导(auto)

自动类型推导:decltype关键字

C++的简化内存模型

常量 (Constant)

一元作用域解析运算符(::)

基于范围的循环

特殊函数

C++17中的带初始化器的if和switch语句

C++概述

C++是实现软件的基本手段。学习C++之后,我们还要学习数据结构、设计模式、学习面向对象分析与设计。

C++演变过程

  YearC++ StandardInformal name2020ISO/IEC 14882:2020C++202017ISO/IEC 14882:2017C++17, C++1z2014ISO/IEC 14882:2014C++14, C++1y2011ISO/IEC 14882:2011C++11, C++0xC++11标准之前的C++被称为“Classic C++”,即经典C++。C++11标准之后的C++被称为“Modern C++”,即现代C++。2003

ISO/IEC 14882:2003

C++031998ISO/IEC 14882:1998C++98   

 C++的编程范式

所谓编程范式,通俗来讲,就是规范编程的一系列思想、方法以及程序设计语言构造块所构成的一种模式。

C++支持多种编程范式:结构化、过程性、面向对象(使开发和维护变得更简单)、泛型(能够处理多种数据)、函数式(非FP语言有副作用,c++11后才支持)等

编程范型(基维百科)

 C++开发工具

Editor

编辑器

代码编辑器主要用于用来编写和查看程序源代码。通常这种编辑器有语法加亮功能。

Compiler

编译器

编译器,是一种计算机程序,它会将用某种编程语言写成的源代码(原始语言),转换成另一种编程语言(目标语言)。

Linker

链接器

是一个程序,将一个或多个由编译器或汇编器生成的目标文件外加库链接为一个可执行文件。

Debugger

调试器

调试器是指一种用于调试其它程序的计算机程序及工具。能够让代码在指令组模拟器(ISS)中可以检查运行状况以及选择性地运行,以便排错、调试。

interpreter

解释器

解释器是一种计算机程序,能够把高级编程语言一行一行解释运行。解释器像是一位“中间人”,每次运行程序时都要先转成另一种语言再作运行,因此解释器的程序运行速度比较缓慢。它不会一次把整个程序翻译出来,而是每翻译一行程序就立刻运行,然后再翻译下一行,再运行,如此不停地进行下去。

IDE

集成开发环境

Integrated Developing Environment通常包括编辑器、自动构建工具、通常还包括调试器。

尽量使用最新版的开发工具,新版工具提供更友好的提示信息,新版工具提供更便捷的操作。

C++程序的编译流程

编译时,由预处理器对指令(#include、#define、#ifdef,#ifndef,#else,#elif,#endif等)进行预处理,在内存中输出翻译单元(就是将include等在源文件上替换了以后产生的临时文件),比如说·#define m 5,那么在该阶段会将程序中的m全部替换成5。然后,编译器接受临时文件,将其编译成包含机器语言指令的目标文件(.obj)。接下去就是链接过程(Linking...),连接器将目标文件和你用到的相关库文件一起链接形成main.exe。

注意:在编译过程中头文件不参与编译,预编译时进行各种替换以后,头文件就完成了其光荣使命,不再具有任何作用

namespace(命名空间/名字空间)

因为在C++中只有一个全局作用域,所以标识符之间可能发生冲突。

因此C++中提出了命名空间的概念:
命名空间将全局作用域分成不同的部分;不同命名空间中的标识符可以同名而不会发生冲突,当然命名空间可以发生嵌套;
此外,全局作用域是默认命名空间。

C++命名空间的使用:使用整个命名空间:using namespace name;使用命名空间中的变量:using name::variable使用默认命名空间中的变量:  ::variable

Example:

#include #include namespace First { int i = 0; } namespace Second { int i = 1; namespace Internal //嵌套命名空间 { struct P //嵌套命名空间 { int x; int y; }; } } int main() { using namespace First; //使用整个命名空间 using Second::Internal::P; //使用嵌套的命名空间 printf("First::i = %d\n", i); printf("Second::i = %d\n", Second::i); //使用命名空间中的变量 P p = { 2, 3 }; printf("p.x = %d\n", p.x); printf("p.y = %d\n", p.y); system("pause"); return 0; }

编译运行,输出结果:

可以使用using namespace指令避免使用名称空间前置。该指令告诉编译器后续代码正在使用指定命名空间中的名称。

#include using namespace std; // first name space namespace first_space { void func() { cout
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜