目录
- 1. 初识 C++
-
- 1.1 发展史
- 1.2 常见概念
- 1.3 常见头文件
- 1.4 关键字
- 2. 输入和输出
- 3. 命名空间
- 4. 缺省参数
-
- 4.1 缺省参数的定义
- 4.2 缺省参数的调用方式
- 5. 函数重载
-
- 5.1 函数重载的定义
- 5.2 函数重载的调用
- 6. 指针空值 nullptr
-
- 6.1 `nullptr` 的定义和用途
- 6.2 `nullptr` 的类型安全性
- 6.3 `nullptr` 的自动转换
正文
1. 初识 C++
1.1 发展史
C++ 是一种强大的通用编程语言,由 Bjarne Stroustrup 在 20 世纪 80 年代开发,最初是作为 C 语言的扩展。它结合了面向对象编程和低级编程的灵活性,适用于系统编程、游戏开发和高性能应用等领域。
【来源】1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。
C++ 的发展分为几个重要阶段:
- 1979 年:Bjarne Stroustrup 开始在 AT&T 开发 “C with Classes”。
- 1983 年:C++ 正式出现。
- 1998 年:ISO/IEC 标准化的 C++98 发布,确立了许多核心特性。
- 2011 年:C++11 版本引入了智能指针、Lambda 表达式、
nullptr
等现代特性。 - 2014 和 2017 年:C++14 和 C++17 继续优化并引入了一些实用的新特性。
- 2020 年:C++20 增加了协程、概念和模块等特性。
【C++的历史版本】
1.2 常见概念
- 面向对象编程 (OOP):支持类和对象,具有封装、继承、多态等特性。
- 泛型编程:通过模板 (Templates) 实现代码的复用。
- 内存管理:C++ 提供了指针和手动内存控制。
C语言是结构化和模块化的语言,适合处理较小规模的程序。
【概念】C++是基于C语言而产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。
【性质】
- 面向对象
- 三大特性:封装,继承,多态。
【C语言和C++的关系】
重要性不言而喻
【4个层次】
- 第一个层次,C++基础 (平平常常)
- 第二个层次,正确高效的使用C++ (驾轻就熟)
- 第三个层次,深入解读C++ (出神入化)
- 第四个层次,研究C++ (返璞归真)
【建议】中后期画思维导图总结。
【摘录】 最后,我说一说我的一些感受:
- 这些年来的对于外企和国内感受—— 国外牛B的IT公司的工程能力并不见得比国内的要强多少,但是国外那些NB的IT公司的架构和设计能力远远超过国内的公司,最可怕的是,那些有超强架构和设计能力的“老程序员们”还战斗在一线,这些战斗在一线的老鸟的能力绝对超过100个普能的新手。
- 对年轻程序员的感受——国内新一代的程序员们太浮燥了。老实说,对于大多数人来说,如果你没有编程到30岁,你还不能成为一个“合格”的程序员。所以,并不是编程编到30岁就玩完了,而是编程编到30岁才刚刚入门。这些不合格的程序,整天BS这个不好,那个不好的,而且喜欢速成,好大喜功。
- 我是一个奔四的人了,编程就像登山一样,越往上爬人越少,所以,在我这个年纪还有想法,对编程还有热情的人不多了,基本上都是转Manager了。其实,什么职位,Title都是虚的,公司没了什么都没了,只有技术才是硬通货。而且,越是这个年纪还在玩编程玩技术的人,其实其经验和能力都是比较强的,都是中坚力量,如果还有其它这个年纪和我一样的人,求交往。
1.3 常见头文件
<iostream>
:标准输入输出流cin
和cout
。<vector>
:动态数组std::vector
。<string>
:std::string
字符串处理。<algorithm>
:提供sort
、find
等常用算法。
1.4 关键字
C++ 中的关键字是语言的基础元素。以下是一些常用关键字:
- 数据类型:
int
、float
、double
、char
、void
、bool
。 - 控制结构:
if
、else
、for
、while
、switch
、case
、break
、continue
。 - 类与对象:
class
、public
、private
、protected
、this
、friend
。 - 内存管理:
new
、delete
。 - 异常处理:
try
、catch
、throw
。 - 其他:
return
、namespace
、using
、constexpr
、nullptr
。
C语言32个关键字,C++总计63个关键字。
后期学习慢慢了解。
asm
do
if
return
try
continue
auto
double
inline
short
typedef
for
bool
dynamic_cast
int
signed
typeid
public
break
else
long
sizeof
typename
throw
case
enum
mutable
static
union
wchar_t
catch
explicit
namespace
static_cast
unsigned
default
char
export
new
struct
using
friend
class
extern
operator
switch
virtual
register
const
false
private
template
void
true
const_cast
float
protected
this
volatile
while
delete
goto
reinterpret_cast
2. 输入和输出
C++ 中,<iostream>
头文件定义了标准输入输出流对象:
cin
:读取输入。cout
:输出信息。
示例代码:
#include<iostream>
int main()
{
std