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

【C++编程入门】:从零开始掌握基础语法

C++语言是通过对C语言不足的地方进行优化创建的,C++在C语言之上,C++当然也兼容C语言,

在大部分地方使用C++比C更方便,可能使用C需要一两百行代码,而C++只需要五六十行。

目录

C++关键字

命名空间

缺省参数 

缺省参数分类

 函数重载


C++关键字

C语言中有32个关键字,在C++中有63个关键字:

 很多关键字与C语言中的一样。

命名空间

在C/C++中,变量、函数以及的类都是大量存在的,这些变量、函数和类的名称将都存 在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化, 以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。

 在输入#include<iostream>之后就包含了C++标准库以及关键字等,它们都被封装在std中,在没有使用第六行的代码之前使用C++中的东西就会报错,编译中搜索不到,当使用第六行的代码就把C++中的东西全部暴露出来了(在全局中),在平常写代码可以使用,但是在项目中不要全部展开,不然可能会导致命名冲突,我们可以单独开放某些常用变量或者函数,没有开放的就需要再前面加std::,也可以创建自己的命名空间。

上述代码便是对某些变量开放,可以直接使用,而cin我们未对其开放在使用时需要在前面加上std::。

运行结果:

自定义命名空间

使用namespace加名称可以形成自定义命名空间,自定义命名空间可以多重嵌套,想要访问命名空间中的变量或者函数就需要再该变量或者函数前加上L::,这样可以很好的防止命名冲突。 

注意:同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。

缺省参数 

缺省参数的概念

缺省参数是指在函数声明或者定义时为函数的参数给定一个缺省值。在调用这个函数时如果没有输入实参就直接调用给定的缺省值。

#include<iostream>
using namespace std;void Fun(int a = 0)
{cout << a << endl;
}int main()
{Fun();Fun(10);
}

运行结果:

 从运行结果可以看出,第一个函数没有实参,却没有报错,调用了缺省值,所以a等于0,第二个函数给了一个实参,就没有调用缺省值。

缺省参数分类

缺省参数有全缺省参数和半缺省参数

全缺省参数

void Func(int a = 10, int b = 20, int c = 30){cout<<"a = "<<a<<endl;cout<<"b = "<<b<<endl;cout<<"c = "<<c<<endl;}

半缺省参数

void Func(int a, int b = 10, int c = 20){cout<<"a = "<<a<<endl;cout<<"b = "<<b<<endl;cout<<"c = "<<c<<endl;}

注意事项:

1. 半缺省参数必须从右往左依次来给出,不能间隔着给

2. 缺省参数不能在函数声明和定义中同时出现  

 3.缺省参数在C语言中是不支持的。

4.缺省参数在函数声明中出现,定义中最好不要出现。

 函数重载

函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这 些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型 不同的问题。

那什么是形参列表的参数不同、类型不同、类型顺序不同呢?

参数类型不同:

int Add(int left, int right)
{cout << "int Add(int left, int right)" << endl;return left + right;
}
double Add(double left, double right)
{cout << "double Add(double left, double right)" << endl;return left + right;
}

参数个数不同:

void f()
{cout << "f()" << endl;
}
void f(int a)
{cout << "f(int a)" << endl;
}

参数类型顺序不同 :

void f(int a, char b)
{cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{cout << "f(char b, int a)" << endl;
}

注意:如果两个函数函数名和参数是一样的,返回值不同是不构成重载的,因为调用时编译器没办 法区分。 

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

相关文章:

  • CENTOS 7 安装VNC
  • 【Java面试笔记:基础】1.谈谈你对Java平台的理解?
  • 移动端动态滑动拨盘选择器【Axure元件库】
  • 自注意力机制、多头自注意力机制、填充掩码 Python实现
  • 如何在白平衡标定种构建不同类型的白平衡色温坐标系
  • Android 音悦适配-v4.3.3-可在线播放可下载音乐的第三方APP
  • 【解决方法】关于解决QGC地面站4.4.3中文BUG,无法标注航点的问题
  • 模型检测技术的发展历史简介
  • Redis基础知识
  • 山东大学软件学院创新项目实训开发日志(21)之小问题修复之对话方向修改
  • 工厂模式:简单工厂模式
  • 免费送源码:ava+springboot+MySQL 基于springboot 宠物医院管理系统的设计与实现 计算机毕业设计原创定制
  • 修改IP地址能否精确到地级市的县?——全面解析
  • 第39讲|决策树与作物分布建模:可解释的AI助力农业智能推演
  • WINDOWS下使用命令行读取本地摄像头FFMPEG+DirectShow,ffplay直接播放摄像头数据
  • arkTs:使用Refresh实现下拉刷新功能(含状态提示与动画控制)
  • MySQL知识点讲解
  • n2n 搭建虚拟局域网,实现内网穿透
  • C++计算 n! 中末尾零的数量
  • RIP动态路由(三层交换机+单臂路由)
  • 20250421在荣品的PRO-RK3566开发板的Android13下频繁重启RKNPU fde40000.npu: Adding to iommu gr
  • Java学习路线--自用--带链接
  • win11修改文件后缀名
  • ADB->查看某个应用的版本信息
  • 力扣面试150题--插入区间和用最少数量的箭引爆气球
  • TensorBoard如何在同一图表中绘制多个线条
  • 第 7 篇:总结与展望 - 时间序列学习的下一步
  • k8s集群GPU监控项说明
  • 【人工智能】使用vLLM高性能部署Qwen大语言模型
  • 10天学会嵌入式技术之51单片机-day-2