当前位置: 首页 > news >正文

C++ 基础知识

1、 namespace的定义

  • 本质是定义一个域,不同的域可以定义同名变量;C++的域有全局域、局部域、命名空间域、类域
  • namespace只能定义在全局,也可以嵌套
  • C++的标准库被放在std(标准模板库中)
#include <stdio.h>
#include <stdlib.h>
namespace yc
{// 命名空间中可以定义变量/函数/类型 int rand = 5;int Add(int left, int right){return left + right;}struct Node{struct Node* next;int val;};
}
int main()
{// 这⾥默认是访问的是全局的rand函数指针 printf("%p\n", rand);// 这⾥指定yc命名空间中的rand printf("%d\n", yc::rand);return 0;
}
//2. 命名空间可以嵌套 
namespace yc
{namespace ya{int rand = 1;int Add(int left, int right){return left + right;}} namespace yb{int rand = 2;int Add(int left, int right){return (left + right)*10;}}
}int main()
{printf("%d\n", yc::ya::rand);printf("%d\n", yc::yb::rand);printf("%d\n", yc::ya::Add(1, 2));printf("%d\n", yc::yb::Add(1, 2));return 0;
}

2、命名空间使用

  • using:将命名空间中某个成员展开,平时学习可以使用,大型项目不建议使用,也就是展开成员的意思。
`// using展开命名空间中某个成员
using A::b;
int main()
{printf("%d\n",A::a);printf("%d\n",b);
}
// 展开命名空间中全部成员
using namespace A;
int main()
{printf("%d\n",a);printf("%d\n",b);return 0;
}

3、C++输入和输出

  • std::cin面向窄字符的标准输入流,std::cout面向窄字符的标准输出流
  • std::endl相当于一个换行字符加速缓冲区
  • << 流插入运算符,>>流提取运算符
  • C++的输入输出自动识别变量类型

4、缺省参数

缺省分为全缺省和半缺省

  • 带缺省参数的函数调⽤,C++规定必须从左到右依次给实参,不能跳跃给实参。

5、函数重载

  • C++⽀持在同⼀作⽤域中出现同名函数,同名函数的形参不同,可以是参数个数不同或者类型不同。
// 1、参数类型不同
int Add(int a, int b)
double Add(int a, int b)
// 2、参数个数不同
void f()
void f(int a)
// 3、参数类型顺序不同
void f(int a, cahr b)
void f(char b , int a)
// 返回值不同不能作为重载条件,因为调⽤时也⽆法区分 
void f()
int f()

6、引用

6.1引用的概念和定义

引用定义:给已经存在的变量取别名,不会新开辟内存,和引用的变量共用一块内存

类型& 引用别名 = 引用对象

// 引⽤:b和c是a的别名 int& b = a;int& c = a;// 可以给别名b取别名,d相当于还是a的别名 int& d = b;// 根据引用不改变名字,也不会开辟内存空间,共用一块内存,下面输出的结果是相同的。cout << &a << endl;cout << &b << endl;cout << &c << endl;cout << &d << endl;

6.2 引用的特性

  • 引用在定义的时候必须初始化,int& b = a;
  • 一个变量可以有很多个引用

6.3 引用的使用

  • 用途:引用传参和引用返回,减少拷贝提高效率
  • 引用传参和指针传参类似,引用传参更方便。

7、const引用

const int a = 10;// 编译报错:error C2440: “初始化”: ⽆法从“const int”转换为“int &” // 这⾥的引⽤是对a访问权限的放⼤ //int& ra = a;// 这样才可以 const int& ra = a;// 编译报错:error C3892: “ra”: 不能给常量赋值 //ra++;// 这⾥的引⽤是对b访问权限的缩⼩ int b = 20;const int& rb = b;// 编译报错:error C3892: “rb”: 不能给常量赋值 //rb++;

8、指针和引用的关系

  • 引用是取别名不用开空间、指针存储要开空间
  • 引⽤在初始化时引⽤⼀个对象后,就不能再引⽤其他对象;⽽指针可以在不断地改变指向对象。
  • 引用可以直接访问引用对象,指针需要解引用才能访问指向对象

9、inline

  • inline修饰的叫做内联函数,调用时建立栈帧,提高效率
  • 使用频繁调用的短小函数,不适合循环和递归

10、nullptr

  • C++11中引⼊nullptr,nullptr是⼀个特殊的关键字,nullptr是⼀种特殊类型的字⾯量,它可以转换成任意其他类型的指针类型。

http://www.xdnf.cn/news/423991.html

相关文章:

  • C++—特殊类设计设计模式
  • 汇添富基金徐寅喆:低利率环境下的短债基金投资策略
  • Hadoop的目录结构和组成
  • CSS3 基础知识、原理及与CSS的区别
  • 基于FPGA的视频接口之千兆网口(六GigE纯逻辑)
  • 使用scp命令拷贝hadoop100中文件到其他虚拟机中
  • SQL、Oracle 和 SQL Server 的比较与分析
  • 数据结构(一) 绪论
  • 【C语言极简自学笔记】井字棋开发
  • Ozon平台产品关键词优化指南:精准引流与转化提升实战策略
  • 影刀RPA开发-CSS选择器介绍
  • 中国品牌日 | 以科技创新为引领,激光院“风采”品牌建设结硕果
  • vscode 同一个工作区,不同文件夹之间跳转问题
  • 嵌入式学习笔记 - HAL_ADC_ConfigChannel函数解析
  • 2025-05-13 Unity 网络基础12——大小端模式
  • centos中JDK_PATH 如何设置
  • 从 Vue3 回望 Vue2:事件总线的前世今生
  • Oracles数据库通过存储过程调用飞书接口推送群组消息
  • FPGA:XILINX FPGA产品线以及器件选型建议
  • MySQL 8.0 OCP(1Z0-908)英文题库(31-40)
  • 【认知思维】过度自信效应:高估自我能力的认知偏差
  • 【神经网络与深度学习】局部最小值和全局最小值
  • win10 局域网内聊天
  • Mac M系列 安装 jadx-gui
  • MySQL数据库故障排查指南
  • 【2025最新】Pycharm里如何运行多个py文件
  • linux 抓包工具tcpdump使用小记(使用时注意权限和系统资源)
  • log.js:5 [vxe table v4.12.5] 缺少 “vxe-tooltip“ 组件,请检查是否正确安装。
  • 网络状态可以通过hutool.HttpStatus获取
  • Data.olllo:一个可以打开 100GB CSV 文件的桌面工具