当前位置: 首页 > 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是⼀种特殊类型的字⾯量,它可以转换成任意其他类型的指针类型。

相关文章:

  • Codeforces Round 997 (Div. 2)
  • JAVA实战开源项目:乐享田园系统 (Vue+SpringBoot) 附源码
  • Nesa测试网 验证者节点部署教程
  • Java后端开发day48--反射动态代理
  • Easysearch 时序数据的基于时间范围的合并策略
  • 2025年5月13日第一轮
  • 深入浅出MySQL 8.0:新特性与最佳实践
  • 2025年大一ACM训练-二分
  • TCP协议详细讲解及C++代码实例
  • 欧拉计划 Project Euler 71(有序分数)题解
  • OPC UA 协议介绍
  • Antd中Form详解:
  • volatile是什么
  • # YOLOv3:基于 PyTorch 的目标检测模型实现
  • RevIN(Reversible Instance Normalization)及其在时间序列中的应用
  • 软件测试服务公司分享:国产化适配测试的重要性和关键要素
  • paimon中批和流查看过去的快照的数据及变动的数据
  • OSCP备战-Kioptrix4详细教程
  • Python+1688 API 开发教程:实现商品实时数据采集的完整接入方案
  • Conda在powershell终端中无法使用conda activate命令
  • 国台办:民进党当局刻意刁难大陆配偶,这是不折不扣的政治迫害
  • 违法违规收集使用个人信息,爱奇艺、轻颜等65款App被点名
  • 高适配算力、行业大模型与智能体平台重塑工业城市
  • 左娅︱悼陈昊
  • 人民日报整版聚焦:专家学者看2025中国经济增长点
  • 乘联分会:上半年车市价格竞争温和,下半年价格战或再开启