导图社区 C++第一章
自考本科C 言说学习,进入“C++语言基础”部分,介绍了C++编程的基础要素,包括“基本的语法”和“三大程序结构”。这张思维导图全面而详细地介绍了C++编程语言的基础知识和核心概念,对于初学者来说是一份非常宝贵的学习资料。
编辑于2024-06-20 05:33:12C++第一章
C++ 语言基础
一、 C 与 C++ 的关系
1 、 C 语言是 C++ 的前身,所以 C++ 中很多基础程序语法来自于C 语言, C++ 是 C 的一个超集,进一步扩充和完善了 C , C++ 比C 更安全
2 、 C++ 是一种编译式的、通用式、大小写敏感的编程语言,完全支持面向对象程序设计。
3、它可以直接访问硬件、提供高性能的抽象以及低级访问,同时也支持面向对象的程序设计。
二、基本的语法
注释:
// 这是一个单行注释
/* 这是一个 多行注释 */
变量和数据类型:
int myInteger = 10; // 整数
double myDouble = 3.14; // 浮点数
char myChar = 'A'; // 字符
bool myBool = true; // 布尔值
常量:
const int MY_CONSTANT = 100; // 常量,其值在程序运行期间不能被修改
运算符:
int sum = 5 + 3; // 加法
int diff = 10 - 4; // 减法
int prod = 2 * 3; // 乘法
int quot = 9 / 2; // 除法
条件语句:
if (condition) { // 如果条件为真,执行这里的代码 } else { // 如果条件为假,执行这里的代码 }
循环语句:
for (int i = 0; i < 10; i++) { // 执行这里的代码 10 次 }
do { // 至少执行一次这里的代码 } while (condition);
while (condition) { // 当条件为真时,重复执行这里的代码 }
函数:
int add(int a, int b) { return a + b; }
数组:
int myArray[5] = {1, 2, 3, 4, 5};
指针:
int x = 10; int* ptr = &x; // ptr 是一个指向 x 的指针
引用:
int x = 10; int& ref = x; // ref 是 x 的引用,通过 ref 修改值也会改变 x 的值
类与对象(面向对象特性):
class MyClass { public: int myVariable; void myFunction() { // ... } };
MyClass obj; // 创建一个 MyClass 的对象
obj.myVariable = 5; // 设置对象的属性
obj.myFunction(); // 调用对象的方法
输入/输出:
#include <iostream> int main() { std::cout << "Hello, World!" << std::endl; // 输出 int num; std::cin >> num; // 输入 return 0; }
三、三大程序结构
顺序结构
按照语句出现的顺序依次执行
各个操作是按照它们在源代码中出现的顺序从上到下顺序执行的
选择结构
分支结构,它表示根据给定的条件,选择执行一个语句块或另一个语句块
if语句
用于基于某个条件来选择性地执行代码块
if (condition) { // 代码块在条件为真时执行 }
if (condition) { // 条件为真时执行的代码块 } else { // 条件为假时执行的代码块 }
if (condition1) { // condition1 为真时执行的代码块 } else if (condition2) { // condition1 为假,但 condition2 为真时执行的代码块 } else { // 所有条件都为假时执行的代码块 }
switch语句
用于基于不同的条件值来执行不同的代码块。
switch (expression) { case constant1: // 当 expression 的值等于 constant1 时执行的代码块 break; case constant2: // 当 expression 的值等于 constant2 时执行的代码块 break; // ... 可以有更多的 case default: // 当 expression 的值不匹配任何 case 时执行的代码块 break; }
循环结构
可以重复执行某段代码,直到满足某个条件为止
for循环:用于重复执行一段代码固定次数的循环。
for (initialization; condition; update) { // 循环体:在每次循环迭代时执行的代码块 }
initialization
初始化表达式,在循环开始之前执行一次。通常用于设置循环控制变量的初始值。
condition
条件表达式,在每次循环迭代之前检查。如果条件为真(非零),则执行循环体;如果为假(零),则终止循环。
update
更新表达式,在每次循环迭代之后执行。通常用于修改循环控制变量,以便在下次迭代时改变条件表达式的值。
while循环:当指定的条件为真时,执行循环体中的代码块。
while (condition) { // 循环体:在每次循环迭代时执行的代码块 }
condition:条件表达式,在每次循环迭代之前检查。如果条件为真(非零),则执行循环体;如果为假(零),则终止循环。
do-while循环:先执行一次循环体中的代码块,然后再检查条件是否为真,如果为真则继续执行循环体,否则退出循环。
do { // 循环体:每次循环迭代时执行的代码块 } while (condition);
输入 / 输出与命名空间
一、头文件
1 、 C++ 语言中使用头文件保存程序中用到的声明
如函数声明、常量定义等,需要使用预处理命名包含头文件 #include
2 、常用的头文件
<iostream>
为标准输入输出流
<fstream>
为标准文件流
<string>
为标准字符串处理函数
<cmath>
为标准数学函数
二、命名空间
(namespace) 将相关的类、函数和变量组织在一起的方式,以避免命名冲突并提高代码的可读性和可维护性。
命名空间提供了一种封装机制,使得不同的库或模块可以使用相同的名称而不会相互干扰。
使用
定义命名空间
使用namespace关键字可以定义一个命名空间。
namespace MyNamespace { int x = 10; void myFunction() { // ... } class MyClass { // ... }; }
使用命名空间
使用 :: 运算符
int main() { MyNamespace::myFunction(); int y = MyNamespace::x; MyNamespace::MyClass obj; return 0; }
使用 using声明来引入特定成员
using MyNamespace::myFunction; int main() { myFunction(); // 不需要前缀 return 0; }
使用 using指令来引入整个命名空间
using namespace MyNamespace; int main() { myFunction(); // 不需要前缀 int z = x; // 不需要前缀 MyClass obj; // 不需要前缀 return 0; }
注意
在头文件中过度使用using namespace指令可能会导致命名冲突,因此通常建议在头文件中避免使用它,而在实现文件中谨慎使用。
嵌套命名空间
namespace Outer { namespace Inner { void nestedFunction() { // ... } } } int main() { Outer::Inner::nestedFunction(); return 0; }
标准命名空间
std
C++标准库中的大多数组件
函数的应用
函数
一段可以执行特定任务的代码块,它们可以被多次调用以执行重复的任务
函数的定义
return_type function_name(parameter list) { // 函数体 }
return_type
函数返回值的类型。
如果函数不返回任何值,则使用void。
function_name
函数的名称,用于在代码中调用该函数。
parameter list
函数的参数列表,包括参数的类型、顺序和数量。如果没有参数,则使用空括号()。
默认值
1 、默认参数就是不要求程序员设定该参数,而由编译器在需要时给该参数赋默认值。当程序员需要传递特殊值时,必须显式地指明
2 、默认参数是在函数原型中说明的,默认参数可以多于 1 个,但必须放在参数序列的后部
在函数原型中,可以省略形参名字,而只给出它的类型及默认值
函数体:包含执行特定任务的代码块。
引用与函数参数
1 、引用的定义
引用(reference)是一个已存在变量的别名,或者说是一个已经分配了内存的对象的另一个名字。
引用相当于给变量取了个别名
不能声明引用的引用。
不能通过常引用去修改其引用的变量
类型名 & 引用名 = 同类型的某变量名;
例
int onelnt = 9;
int &aname = onelnt; // 声明引用 oneInt 必须已进行初始化
const int &cname = ontInt ;// 常引用
2 、引用在函数中的使用
C++ 中函数调用时参数的传递方式
传值
形参是实参的副本,形参的改变不会影响实参
传引用
形参的改变,意味着实参的改变
变量、指针、引用都可以作为赋值语句的左值
三、内联函数 inline ( 常考 )
1 、作用
是一种优化手段,避免频繁调用与返回
引入内联函数,以空间消耗节省时间开销
内联函数适合于只有几条语句的小函数,降低函数调用的开销
如果函数体中有循环或 switch 语句,通常不定义为内联函数 。
2 、定义
inline 返回值类型 函数名 ( 形参表 ){ 函数体 }
inline int Max(int a, int b) { return (a > b) ? a : b; }
四、函数重载 ( 必考 )
1 、函数重载可以使一个函数名具有多种功能,即具有“多种形态这种特性称为多态性。 C++ 的多态性又被直观地称为“一个名字,多个函数”。源代码只指明函数调用,而不说明具体调用哪个函数。编译器的这种连接方式称为动态联编或迟后联编。在动态联编中,直到程序运行才能确定调用哪个函数。函数重载机制,减少了命名空间的浪费。
2 、重载的条件
参数个数不同,或参数对应类型不同返回类型,引用参数都不能区分重载
不能以形参名来区分函数
不能以函数返回值来区分函数
必须是形参的个数或者类型不同才能构成函数重载。
动态内存分配
动态内存分配 ( 常考 )
1 、使用关键字 new 实现动态内存分配
T *p = new T; // 分配大小为 sizeof(T) 字节的内存空间
T *p = new T[N]; // 分配一个任意大小的数组, N 为数组元素个数
2 、使用完毕使用 delete 释放空间
delete 指针 ;
delete [] 指针 ;// 释放数组
释放数组元素时,记得加中括号,这个经常考填空题或程序填空题,一定要会写
C++ 语言程序结构
1 、主程序 main
(1) C++ 程序以 .cpp 为文件扩展名,文件中包含若干类和函数。程序中有且仅有一个主函数 main( ),这是程序执行的的总入口。
(2) 主函数中可以调用其他函数,但其他函数不可以调用主函数
2 、 C++ 的注释风格
多行注释 从 /* 开始,到 */ 结束 ,这之间的所有内容都为注释
单行注释 : 从 // 直到行尾,都是注释