C++基础语法
1.命名空间
命名空间(Namespace) 是一种用于组织代码、避免命名冲突的机制。它通过将全局作用域的标识符(变量、函数、类等)分组到特定的命名空间中,有效解决了大型项目中可能出现的名称重复问题
命名空间的核心作用
避免命名冲突:当不同库或模块定义了相同名称的标识符时,命名空间可以隔离它们。
代码模块化:通过逻辑分组提高代码可读性和可维护性。
控制标识符可见性:通过命名空间限定符显式访问特定标识符。
1.1.基本语法
1.定义命名空间
namespase在全局范围中定义
2.访问命名空间成员
使用作用域解析运算符 ::
1.2.用法
1.嵌套使用
2.匿名使用
只能当前文件使用,其他文件访问不了
3.使用using声明
4.使用别名
2.C++中的输入输出
在 C++ 中,输入输出(Input/Output,简称 I/O)主要通过 标准库 <iostream>
和 文件流 <fstream>
实现
1.输出:
2.输入
3.缺省参数
核心规则
函数定义规则:
1. 从右向左连续设置
缺省参数必须从右向左连续定义,即:
1.如果某个参数有默认值,其右侧所有参数必须都有默认值。
2.左侧参数可以有或没有默认值。
调用方规则:
1.缺的一定要传
2.不能跳传,不传的后面的都别传了
4.方法的重载
重载规则:
1.参数列表不同
这是方法重载的关键,参数的类型、数量或者顺序不同都可以实现重载
2.返回类型不能作为重载的依据
3.const修饰形参可以作为依据
5.引用
引用相当于取别名,对于一个变量来说,变量本身可以访问存储变量的内存空间,此时引用就是赋予这个别名也可以一起访问这个内存空间
下面对应的地址都是一样的
引用的要求
1.必须初始化
引用必须在声明时绑定到一个已存在的变量,不能为 NULL
2.不可以重新绑定
除非绑定的是同一块内存
3.必须指向有用的内存
引用必须指向有效的内存地址,不存在类似指针的 NULL
引用。
4.常量引用
常量引用可以绑定到常量或临时值,但不能通过引用修改原值。
5.1.const
1.权限放大
此时a是不可以被修改的,但是别名 v可以被修改,这是权限放大,所以此时是不可以的
2.权限缩小
此时a是可以被修改的,但是别名 v不可以被修改,,这是权限缩小,所以此时是可以的
3.临时变量

5.2.引用与指针关系
6.inline
inline
是一个用于函数声明和定义的关键字,它的主要用途是建议编译器将函数调用替换为函数体的实际代码,以此减少函数调用带来的开销,就是为了提高运行效率
使用:
在声明或者在定义的时候,直接加在前面即可
工作原理:
inline
只是对编译器的一个建议,而非强制要求。编译器会根据函数的复杂度、调用情况等因素来决定是否真正将函数内联展开。例如,递归函数、包含循环或复杂控制结构的函数,编译器通常不会将其内联。
优点:
1.减少函数调用开销:函数调用会涉及到一系列的操作,如保存和恢复寄存器、参数传递、栈帧的创建和销毁等,使用内联函数可以避免这些开销,提高程序的执行速度。
2. 提高代码可读性:内联函数可以像宏一样在调用处展开,但又具有函数的类型检查和作用域规则,能让代码更易读和维护。
缺点:
1.代码膨胀:如果内联函数的代码较长或者被大量调用,会导致代码量显著增加,可能会使程序的内存占用变大。
2.编译时间增加:编译器需要在每个调用点插入函数体代码,这会增加编译的时间和复杂度。
7.nullptr

8.作用域解析运算符::
8.1.访问全局作用域的标识符
当局部代码中的局部变量和全局变量重名的时候,就可以使用”::“进行区分
8.2.访问命名空间中的表示符
命名空间,就是为了避免命名上的冲突,所以将,函数,变量,类封装在一个命名空间中,
访问命名空间的时候,命名空间名::要访问的变量,即可
8.3.访问类的静态成员
在全局变量中对类中静态成员进行初始化,
在局部变量中调用静态成员变量,
类名::静态成员名
8.4.定义类的成员函数
当类中只对成员函数进行声明,准备在全局进行初始化,就可以使用
类名::函数名 来进行指定哪个类中的哪个函数