C++入门(1)

一。第一个C++程序

文件后缀为.cpp,Linux 使用 g++ 编译,VS 识别 cpp 自动调用 C++ 编译器

兼容 C 语言printf写法;原生标准输出使用<iostream>的std::cout

二。命名空间

1.定义:定义命名空间,需要使用关键字namespace,然后接一个{},括号中的即为命名空间的成员

2.作用:解决 C 语言全局命名污染、同名变量/函数编译冲突问题。

3.特性:

  • 域隔离:分为局部域、全局域、命名空间域、类域,仅局部/全局域影响变量生命周期
  • 嵌套定义:多文件同名 namespace 会自动合并为同一个

4.使用方式:

  • 限定访问 (项目推荐):bit::rand(每次使用前都加上,例如:std::cin>>a,std::endl)
  • 单独展开成员 :using N::b(例如:先导入using std::cin;之后可以写cin>>a)
  • 全局展开 (仅练习用,项目禁用):using namespace std

三。C++输入和输出

需要包含头文件<iostream>

1.输入:即std::cin>>x(待输入的字符)(如果std在前面已经导入过了,则可以不写),支持多组输入->std::cin>>x>>y。它会自动识别类型,不需要&,不需要格式符。和scanf类似

2.输出:即std::cout>>x(待输入的字符)(如果std在前面已经导入过了,则可以不写),支持多组输入->std::cout>>x>>y。它会自动识别类型,不需要&,不需要格式符。和printf类似

3.endl 和 ' \n ' :都有换行的功能,但略有差异(后续会提)

4.代码演示:

四。缺省函数

1.定义:就是在声明或定义函数时为函数的参数指定一个缺省值(默认值)。在调用函数时,若没有指定形参,则使用该形参的缺省值(默认值)

2.分类:

  • 全缺省:就是全部形参都给一个缺省值
  • 半缺省:部分形参给缺省值。规定半缺省参数必须从左往后依次连续缺省,不能间隔跳跃给缺省值

说明:带缺省函数的函数调用,规定必须从左往右依次给实参,不能跳跃给实参

函数声明和定义分离时,缺省参数不能在函数声明和定义中同时出现,规定函数声明必须给 缺省值

五。函数重载

1.定义:函数重载就是 同一个作用域中出现同名函数。但是要求同名函数的形参不同,可以是参数个数不同,类型不同或顺序不同。仅返回值不同不能构成重载。注意:重载 + 缺省参数会产生调用歧义,编译报错。 C 语言不支持重载,是 C++ 独有的特性。

六。引用

1.定义:就是给变量取一个别名。编译器不会为引用变量开辟新的空间,它和它引用的变量公用一块内存空间。使用方法:类型&引用别名=引用对象

2.核心特性:

  • 定义时必须初始化
  • 一个变量可拥有多个引用
  • 绑定实体后,无法再指向其他变量

代码演示:

  1. 功能:
  • 做函数形参,修改形参影响实参
  • 做函数形参,减少拷贝,提高效率
  • 引用返回,即函数返回别名,可修改返回值,提升性能;禁止返回局部变量引用(野别名风险)

七。inline内联函数

1.作用:编译时c++编译器会在调用处展开内联函数,无需建立栈帧,提高效率,以此替代C的宏

2.限制:仅适合短小频繁调用函数;递归、长函数 inline 会被编译器忽略(仅建议,非强制)

3.注意点:inline不建议声明和定义分离在两个文件中,分离会导致链接错误

八。nullptr

  1. C 语言NULL是宏,本质为 0,函数重载时会错误匹配 int 形参,产生逻辑 bug
  2. C++11 新增nullptr关键字,仅能隐式转换为各类指针,不会和整数混淆,是空指针标准写法。
相关推荐
怕浪猫4 小时前
GEO 优化到底是什么?AI时代内容创作者必须懂的新技能
算法·面试·github
朝朝辞暮i5 小时前
C++ 第 23 课:class —— 开始真正进入面向对象
开发语言·c++·算法
Evand J6 小时前
【MATLAB例程】三维RRT+APF避障路径规划与到达角(AOA)定位算法|三维路径优化与定位仿真例程
算法·matlab·路径规划·代码·定位·rrt·aoa
小师兄吃牛肉6 小时前
C语言篇:宏
c语言·开发语言
郑同学的笔记6 小时前
【c++随笔28】strcmp 和 memcmp对比
开发语言·c++
随意起个昵称7 小时前
【背包dp】输出方案路径
c++·动态规划
言乐67 小时前
Python根据无法识别搜索词找出可能输入内容模型
开发语言·python·django·virtualenv·pygame
weixin_307779137 小时前
有限产能智能排产与动态重排智能体:从需求解构到技术实现
开发语言·人工智能·算法·架构
kakakahahahaha7 小时前
Windows C盘临时文件清理:%temp%、Windows Temp、Prefetch、Windows.old与hiberfil.sys处理指南
c语言·开发语言·windows
朝朝辞暮i7 小时前
C++ 第 27 课:智能指针 shared_ptr
开发语言·c++·算法