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

C++入门知识学习(上)

今天,开始一门新的课程知识点的复习,c++入门知识点复习,废话不多说,直接开始。

一、命名空间

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

#include<stdio.h>
#include<stdlib.h>int rand = 0;int main()
{printf("%d\n", rand);return 0;
}

这段代码,会出现编译错误,C语言没办法解决类似这样的命名冲突问题,所以C++提出了namespace来解决。

namespace WD
{int rand = 0;}
int main()
{printf("%d\n", rand);return 0;
}

像这样,就不会出现编译出错,程序能够跑起来,但是编译结果不是10,而是出现了随机值。因为,默认不会去命名空间里去寻找。因此,需要因此出现了作用域限定符::,使用上这个作用域限定符就能使用命名空间作用域里的rand。

除了,直接使用作用域限定符,还可以使用using将命名空间中某个成员引入,如

namespace WD
{int rand = 10;}
using WD::rand;
int main()
{printf("%d\n", WD::rand);printf("%d\n", rand);return 0;
}

再或者直接使用using namespace 命名空间名称引入

namespace WD
{int  a = 10;}
using WD::a;
//using namespace WD;
int main()
{printf("%d\n", WD::a);printf("%d\n", a);return 0;
}

二、C++输入&输出

进入C语言学习的第一段代码是教我们如何使用printf函数打印hello Word!

int main()
{printf("Hello Word!\n");return 0;
}

那么在C++中如何进行输入和输出呐?

那么这里我们首先要学习一下cout标准输出对象,使用C++的方式将Hello Word!进行打印。

#include<iostream>
using namespace std;int main()
{cout << "Hello Word!" << endl;return 0;
}

这里的endl是C++的特殊符号,表示换行输出。

那么C++是如何输入的呐,这里我们再学习cin标准输入对象。

#include<iostream>
using namespace std;int main()
{int a = 0;cin >> a ;cout << a << endl;cout << "Hello Word!" << endl;return 0;	
}

值得注意的是,在使用cout和cin以及endl时需要包含<iostream>头文件,以及按命名空间使用方法使用std。

三、缺省参数

什么事缺省参数,首先可以先来看一看缺省参数的定义:缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实 参则采用该形参的缺省值,否则使用指定的实参。我们使用一小段代码来解释一下。

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

主函数里第一个调用的fun函数,并未传递实参进去,那么此时在函数定义里,有一个int a = 5;那么在实参没有传递数值时,那么此时就会直接使用这个形参的参数。如果有实参,那么就直接使用实参的参数。因此这段代码的编译结果如下:

缺省参数可以分为全缺省参数和半缺省参数。

首先,对于全缺省参数,顾名思义就是全部都是缺省参数,一个函数的参数全部都是缺省参数。如:

那么什么是半缺省参数呐?依然顾名思义,不是全部都是缺省参数的就是半缺省参数,如:

这里,主函数调用的fun函数是有一个值传递了的,因此结果a = 10;

注意:

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

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

3.缺省值必须是常量或者全局变量

4.C语言不支持(编译器不支持)

四、函数重载

自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重 载了。 比如:以前有一个笑话,国有两个体育项目大家根本不用看,也不用担心。一个是乒乓球,一个 是男足。前者是“谁也赢不了!”,后者是“谁也赢不了!”

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

简单解释一下这是什么意思呐,在C语言中,是不能使用两个同名的函数,而在C++中就出现两个同名的函数。这些同名函数返回值可以一样,只是形参不同,比如,函数参数的个数不同,类型不同,以及类型顺序不同。下面用代码简单解释一下。

1.函数参数个数不同

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>using namespace std;int add(int x, int y)
{cout << "int add(int x,int y)" << endl;return x + y;
}int add(int x, int y, int z)
{cout << "int add(int x,int y,int z)" << endl;return x + y + z;
}int main()
{add(1, 2);add(1, 2, 3);return 0;
}

编译结果如下:

2.参数类型不同

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>using namespace std;int add(int x, int y)
{cout << "int add(int x,int y)" << endl;return x + y;
}int add(int x, int y, int z)
{cout << "int add(int x,int y,int z)" << endl;return x + y + z;
}double add(double x, double y)
{cout << "double add(double x,double y)" << endl;return x + y;
}int main()
{add(1, 2);add(1, 2, 3);add(1.1, 2.2);return 0;
}

代码运行结果:

3.参数类型顺序不同

void add(int x, double y)
{cout << "void add(int x,double y)" << endl;
}
void add(double x, int y)
{cout << "void add(double x,int y)" << endl;
}
int main()
{add(1, 1.1);add(1.1, 1);return 0;
}

编译结果:

OK,先复习到这里,总结一下,上篇主要学习了四个知识点,分别是命名空间、C++输入&输出、缺省参数、函数重载。那么剩下的知识点全部在下篇进行复习。下篇见。

http://www.lryc.cn/news/603833.html

相关文章:

  • 嵌入式学习日志(十一)
  • css3之三维变换详说
  • SQL Server中的分页查询
  • leetcode热题——螺旋矩阵
  • 第十一天:不定方程求解
  • 镁金属接骨螺钉注册检测:骨科植入安全的科学基石
  • Rust基础-part8-模式匹配、常见集合
  • 亚马逊 Vine 计划:评论生态重构与合规运营策略
  • 学习笔记-中华心法问答系统的性能提升
  • 小孙学变频学习笔记(十二)机械特性的调整 机械特性的改善
  • 想要批量提取视频背景音乐?FFmpeg 和转换器都安排上
  • Day 25:异常处理
  • VTK开发笔记(一):VTK介绍,Qt5.9.3+VS2017x64+VTK8.2编译
  • Zynq SOC FPGA嵌入式裸机设计和开发教程自学笔记:GPIO扩展与中断控制技术,万字详解!!
  • 车载刷写架构 --- 整车刷写中为何增加了ECU 队列刷写策略?
  • 服务器分布式的作用都有什么?
  • Windows下基于 SenseVoice模型的本地语音转文字工具
  • Ubuntu25.04轻量虚拟机Multipass使用Shell脚本自动创建并启动不同版本Ubuntu并复制文件
  • 【支持Ubuntu22】Ambari3.0.0+Bigtop3.2.0——Step1—基础环境准备
  • GaussDB 约束的语法
  • 【LeetCode】前缀表相关算法
  • 服务器数据恢复—RAID上层部署的oracle数据库数据恢复案例
  • Node.js 是怎么一步步撼动PHP地位的
  • #C语言——学习攻略:深挖指针路线(三)--数组与指针的结合、冒泡排序
  • 云原生MySQL Operator开发实战(四):测试策略与生产部署
  • 什么情况下会出现数据库和缓存不一致的问题?
  • PowerShell脚本自动卸载SQL Server 2025和 SSMS
  • 传媒行业视频制作:物理服务器租用是隐藏的效率引擎
  • 基于Coze平台的自动化情报采集与处理引擎—实现小红书图文到飞书的端到端同步
  • MySQL数据库 mysql常用命令