C++入门学习基础
1.初识C++
起源
C++ 的历史可以追溯到 1979 年,当时 Bjarne Stroustrup 正在准备他的博士毕业论文,他发现面向对象的思想对于软件开发非常有用,但当时已有的 Simula 语言执行效率低,实用性不强,而 C 语言以其高可移植性和高效的底层操作备受赞誉。于是,Stroustrup 开始着手 “C with Classes” 的研发工作,这是 C++ 的前身,其目的是将面向对象的特性引入 C 语言。
命名
最初,这门新语言曾被称为 “New C”,之后又被称作 “C with Classes”。1983 年,该语言正式更名为 C++。C 语言中的 “++” 运算子的作用是对一个变量进行递增操作,这也体现了 Stroustrup 对这种新语言是基于 C 语言进一步发展的定位。
标准演进
随着时间的推移,C++ 不断发展和完善。1998 年,C++ 标准委员会发布了第一个国际标准—ISO/IEC14882:1998(C++98),标准模板库(STL)也被纳入其中。2003 年发布了 C++03 标准,对 C++98 中的一些问题进行了修订。2011 年,C++11 标准面世,引入了众多新特性,如正则表达式、标准线程库、新的 for 语法、auto 关键字等。2014 年,C++14 标准通过;2017 年,C++17 标准发布,进一步简化了语言的使用;后续还有不断更新的标准和版本在持续推动着 C++ 的发展。
2.主要特点
高效性与底层控制能力
C++ 是一种编译型语言,直接被编译成机器码,执行效率非常高。这使得它在对性能要求极高的领域,如操作系统、游戏开发、实时控制系统等方面具有不可替代的地位。例如,许多大型游戏的核心引擎都是用 C++ 编写的,因为游戏运行时需要快速处理大量的图形计算和物理模拟,C++ 的高效性能能够满足这种需求。
面向对象编程
C++ 支持封装、继承和多态等面向对象的核心特性。封装将数据和操作封装在类中,提高了代码的安全性和可维护性;继承允许子类继承父类的属性和方法,实现了代码的复用;多态则使得不同类型的对象可以通过相同的接口进行操作,增加了程序的灵活性和可扩展性。通过面向对象编程,程序员可以更方便地构建大型、复杂的软件系统,提高开发效率。
强大的标准库
C++ 标准库提供了丰富的功能,包括输入输出、字符串处理、容器、算法、文件操作等。这些库函数经过了高度优化,使用起来非常方便,可以大大提高开发效率。例如,vector 容器可以动态地存储和管理元素,方便地进行元素的添加、删除和访问操作;algorithm 库中的排序、查找等算法可以快速地对数据进行处理。
02
C++学习书籍
杨卫明|老师
关于作者|ABOUT THE AUTHOR
本书是作者杨卫明老师总结近20年的教学与实践经验,结合工程教育认证、课程思政、STEM教学理念和一流课程建设经验编著而成。课程内容以问题为导向,结合案例实战,通过简洁、通俗的语言,深入浅出、循序渐进地讲解课程内容。书中实例丰富、案例经典、代表性强,注重了基础知识与典型应用相结合,具有较高的系统性、实用型和可操作性,书中所有代码均在Visual Studio 2022环境下运行通过。
书籍特点|ABOUT BOOK FEATURES
(1)以问题为导向,结合工程教育认证标准,融合课程思政和STEM教学理念,开发了丰富的线上线下混合教学资源。
(2)注重知识的逻辑性、系统性、科学性和实用性,语言通俗易懂、深入浅出,逐层递进、层层展开,循序渐进地讲解课程内容,符合教学规律,方便教师组织教学。
(3)教材实例丰富、案例经典、代表性强,把课程理论、实验实训和综合应用融为一体,解决了资源分散问题,方便教师教学和学生学习使用。
03
C++学习基础
一个简单的程序
Program
每一个C++程序都包含了一个或多个函数,其中main函数是必须的,所以一个C++程序至少含有一个main函数,操作系统通过调用main函数来执行你写的C++程序。下面就是一个简单的C++程序,只包含了一main函数。如代码所示,一个函数至少包含四个部分,返回类型、函数名、参数列表和函数体。这个main函数返回值是int,这是C++的内置类型(是由语言本身定义的), main是函数名,()中是参数列表(可以为空), 最后{ }中的是函数体,是函数执行的具体过程。在例子中只包含了一个语句,return会终止函数执行并返回一个值(0)给函数调用者,0是int类型,也就是整数。函数的返回值要与函数定义的返回类型相同,否则会产生错误,无法编译通过。
例如:#include<iostream>
using namespace std;
int main()
{
cout << "hello world" << endl;
system("pause");
return 0;
}
控制流
C++的控制流为while和for循环,if判断语句。
</>while 语句
当while中的判断条件为true是会循环执行while内的语句
</>for 循环
</>if 语句
命名空间的定义
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字(随自己定义),然后接一对{ } 即可
{ }中即为命名空间的成员
注意:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中
例如:
在上述代码中会发现,若想访问命名空间中的变量,则需要借助一个作用符 :: 这个符号叫做 域作用限定符,xnh :: rand 的意思就是,去左边这个叫xnh的域(命名空间)里面找rand这个变量。
变量
作用:给一段指定的内存空间起名,方便操作这段内存
语法:数据类型 变量名 = 初始值;
示例:
#include<iostream>
using namespace std;
int main( )
{
int a = 10; //变量的定义
cout << "a = " << a << endl; //语法:数据类型 变量名 = 初始值
system("pause");
return 0;
}
常量
作用:用于记录程序中不可更改的数据
C++定义常量两种方式
1. #define 宏常量: #define 常量名 常量值
• ==通常在文件上方定义==,表示一个常量
2. const修饰的变量 const 数据类型 常量名 = 常量值
• ==通常在变量定义前加关键字const==,修饰该变量为常量,不可修改
示例:
#include<iotream>
int main()
{ // 字面常量
int num1 = 42;
std::cout << "字面常量整数:" << num1 << std::endl;
double pi = 3.14159;
std::cout << "字面常量浮点数:" << pi << std::endl;
char letter = 'A';
std::cout << "字面常量字符:" << letter << std::endl;
const int constNumber = 100;
// constNumber = 200; // 错误,不能修改 const 修饰的常量
std::cout << "const 修饰的常量:" << constNumber << std::endl; #define MAX_VALUE 500
std::cout << "宏常量:" << MAX_VALUE << std::endl;
return 0;
}
04
C++经典案例
案例1:三只小猪比体重
向上滑动查看更多
运行为:
案例2:水仙花数
向上滑动查看更多
运行为:
案例3:乘法口诀表
运行为: