从零开始:C++语法及代码的分析详解

简介: 从零开始:C++语法及代码的分析详解

语法及代码分析:

1、初始代码分析


#include <iostream> 

using namespace std;

int main()

{

   cout << "Hello world!" << endl; // Cout输出

   return 0; // 正常退出

}


- 以 # 开头的语句成为预处理指令

- #include 语句不是必须的,如果一旦在程序中存在该语句,就必须放置在程序开始处。


1.1 iostream

- io 即 input & output (输入 & 输出)

- Stream 即 流


1.2 using namespace std

- using 即 使用

- NameSpace 即 命名(name)空间(space)

- NameSpace 主要用于避免名称的重复

- 命名空间是一项C++特性,用来在编写大型程序时组织源代码


早些的编码将标准库功能定义在全局空间里(所以并不需要注明使用什么命名空间),声明在带.h后缀的头文件里。

C++标准为了和C区别开,也为了正确地使用命名空间,规定头文件不使用后缀.h。

因此,当使用<iostream.h>时,相当于在C中调用库函数,使用的是全局命名空间,也就是早期的C++实现。

当使用<iostream>时,该头文件没有定义全局命名空间,必须使用namespace std,指明在哪里的命名空间,这样才能使用类似于cout这样的C++标识符。


1.3 cout << "Hello world!" <<endl

- << 符号表示把字符串 ”Hello World“ 发送给 Cout 打印

- Endl是控制符,表示重起一行(\n)

- 该命令表示将字符串插入到输出流中

- Endl(ENDL)表示 End Line,

- Endl 与 \n 都可表示换行,但Endl会在结束时清空缓冲区(立刻输出,结束改行语句),而 \n 仅是单纯换行,清空后不会影响下行输出。


从概念上看,输出是一个流,可以理解成从程序流出的一系列字符

Cout 对象(在此可理解为屏幕)表示这种流,在 iostream 中可以定义它

Cout 右侧的 << 符号表示插入运算符,可以将右侧信息插入到流中


2、关于【面向对象】

面向对象的特性:封装、继承、多态

对象的三大属性:状态,行为,标识符

封装(Encapsulation):隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。

继承(Public):提高代码复用性;继承是多态的前提。

多态(Polymorphism)在面向对象语言中,接口的多种不同的实现方式即为多态。

对象:对象就是一个概念,把所有的事物都称作为“对象”,万物皆对象。

属性:属性就是该事物的组成部分,所有可以被包含的部分都称为“属性”,一切皆包含属性。

标志符:标志符是一个对象的属性,他区分了这个对象与所有其他对象。

面向过程的优、缺点:

优点:性能比面向对象好,因为类调用时需要实例化,开销比较大,比较消耗资源。

缺点:不易维护、不易复用、不易扩展。

面向对象的优、缺点

优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护。

缺点:性能比面向过程差。


举例:

“有一天你想吃鱼香肉丝了,怎么办呢?你有两个选择:

1、自己买材料,肉,鱼香肉丝调料,蒜苔,胡萝卜等等然后切菜切肉,开炒,盛到盘子里。

2、去饭店,张开嘴:老板!来一份鱼香肉丝!

看出来区别了吗?

一就是面向过程,二是面向对象。

面向对象有什么优势呢?首先你不需要知道鱼香肉丝是怎么做的,降低了耦合性。

如果你突然不想吃鱼香肉丝了,想吃洛阳白菜,对于你可能不太容易了,还需要重新买菜,买调料什么的。

对于二,太容易了,大喊:老板!那个鱼香肉丝换成洛阳白菜吧,提高了可维护性。

总的来说就是降低耦合,提高维护性!

面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。

面向对象是模型化的,你只需抽象出一个类,这是一个封闭的盒子,在这里你拥有数据也拥有解决问题的方法。需要什么功能直接使用就可以了,不必去一步一步的实现,至于这个功能是如何实现的,管我们什么事?我们会用就可以了。

面向对象的底层其实还是面向过程,把面向过程抽象成类,然后封装,方便我们我们使用的就是面向对象了。”

目录
相关文章
|
29天前
|
自然语言处理 算法 前端开发
C++与Doxygen:精通代码文档化之道
C++与Doxygen:精通代码文档化之道
49 0
|
1月前
|
编译器 C++
C++ 双冒号::开头的语法,::变量名,获取全局作用域变量
C++ 双冒号::开头的语法,::变量名,获取全局作用域变量
17 0
|
30天前
|
Linux 编译器 程序员
【Linux 调试秘籍】深入探索 C++:运行时获取堆栈信息和源代码行数的终极指南
【Linux 调试秘籍】深入探索 C++:运行时获取堆栈信息和源代码行数的终极指南
68 0
|
1月前
|
编译器 测试技术 C++
【Python 基础教程 01 全面介绍】 Python编程基础全攻略:一文掌握Python语法精髓,从C/C++ 角度学习Python的差异
【Python 基础教程 01 全面介绍】 Python编程基础全攻略:一文掌握Python语法精髓,从C/C++ 角度学习Python的差异
167 0
|
1月前
|
算法 安全 大数据
【C/C++ 随机函数行为】深入探索C++中的随机数:std::random_device与rand的行为分析(二)
【C/C++ 随机函数行为】深入探索C++中的随机数:std::random_device与rand的行为分析
48 0
|
1月前
|
编译器 C++
深入理解 C++ 语法:从基础知识到高级应用
了解C++基础语法,包括`#include &lt;iostream&gt;`引入输入输出库,`using namespace std`简化命名。`int main()`是程序入口,`cout &lt;&lt; &quot;Hello World!&quot;`用于输出文本。换行可使用`\n`或`endl`。注释使用`//`进行单行注释,`/* */`进行多行注释。
27 0
|
19小时前
|
设计模式 编译器 数据安全/隐私保护
C++ 多级继承与多重继承:代码组织与灵活性的平衡
C++的多级和多重继承允许类从多个基类继承,促进代码重用和组织。优点包括代码效率和灵活性,但复杂性、菱形继承问题(导致命名冲突和歧义)以及对基类修改的脆弱性是潜在缺点。建议使用接口继承或组合来避免菱形继承。访问控制规则遵循公有、私有和受保护继承的原则。在使用这些继承形式时,需谨慎权衡优缺点。
10 1
|
2天前
|
设计模式 存储 Java
C++从入门到精通:3.5设计模式——提升代码可维护性与可扩展性的关键
C++从入门到精通:3.5设计模式——提升代码可维护性与可扩展性的关键
|
2天前
|
存储 C++
C++从入门到精通:1.1.4基础语法之控制流
C++从入门到精通:1.1.4基础语法之控制流
|
2天前
|
存储 编译器 C++
C++从入门到精通:1.1.2基础语法之数据类型
C++从入门到精通:1.1.2基础语法之数据类型