C++基础知识 (命名空间、输入输出、函数的缺省参数、函数重载)

news2024/11/15 11:04:22

⭐️ 第一个 c++ 代码

🌠 例1:

#include <iostream>
using namespace std;

int main() {

	cout << "hello world" << endl;

	return 0;
}
  • #include <iostream> 标准输入输出
  • stdc++ 标准库的命名空间,将标准库的定义实现都放到这个命名空间中
  • using namespace std 展开 std 里的内容
  • cout   c 代表的是 console 控制台的意思,out 有输出的意思
  • << 流运算符 流插入
  • endl 等价于 '\n'

⭐️ 命名空间

c++ 中,变量、函数和类的名称存在于全局作用域中,可能会导致冲突。比如:在 #include <stdlib.h> 中存在一个 rand 函数,当你再定义一个全局的 rand 变量这时编译器就会报错。而使用命名空间将变量、类型、函数放在一个域中以放命名冲突,使用 namespace 关键字来创建命名空间。

🌟 命名空间的定义和访问

语法: namespace name {}

🌠 例2:

// 定义命名空间
namespace mySpace {
	char name[10] = "sunwukong";
	int age = 18;
	char gender = 'male';

	int add(int num1, int num2) {
		return num1 + num2;
	}

	struct Node {
		int val;
		struct Node* next;
	};
}

// 命名空间的访问
int main() {

	struct mySpace::Node node;
	node.val = 10;

	cout << mySpace::age << endl;

	cout << mySpace::add(10, 20) << endl;

	return 0;
}

ps: 若是变量或者函数直接使用命名空间的 name::来访问即可。但是如果是结构类型 mySpace::struct Node 这样的写法是 error 的。要在 struct 后面写命名空间 struct mySpace::Node

🌟 命名空间可以嵌套

namespace N1 {
	int a;
	int b;
	namespace N2 {
		int c;
		int d;
	}
}

ps: 还有一种情况,若在许多文件中存在多个相同的命名空间,编译器最后会合成为同一个命名空间。

🌠 例3:

#include <iostream>
using namespace std;

int num = 10;

int main() {

	int num = 1;

	cout << num << endl;

	return 0;
}

ps: 以上代码会有局部优先的问题,所以最终 num 访问结果是 1,但是也可以访问到全局的 num 使用 :: 默认代表访问全局域 ,例如:cout << ::num << endl;:: 前面加上命名空间的名称代表访问命名空间的某个对象。

🌟 命名空间的使用

  1. name::a 加命名空间名称及作用域限定符
  2. using name::a 使用 using 将命名空间中某个成员引入
  3. using namespace name 使用 using namespace 引入命名空间

⭐️ c++ 输入输出

🌠 例4:

#include <iostream>
using namespace std;

int main() {

	int num = 0;
	double score = 0.0;

	cin >> num >> score;
	cout << num <<" " << score << endl;

	return 0;
}
  • cin、cout   c 代表 console 有控制台的意思 in 有内的意思 out 有外的意思,cin 标准输入对象(键盘)、cout 标准输出对象(控制台),必须包含 <iostream> 以及命名空间 std
  • coutcin 是全局的的流对象,它们都包含在 <iostream> 头文件中
  • << 是留插入运算符、>> 是流提取运算符
  • c++输入输出可以自动识别类型

⭐️ 函数的缺省参数

缺省参数是声明或者定义函数时为函数的参数指定一个默认值。在调用函数时,如果没有指定实参则采用默认值(缺省参数),否则使用指定实参。

🌠 例5:

#include <iostream>
using namespace std;

void Func(int num = 10) {
	cout << num << endl;
}

int main() {

	Func();		// 10
	Func(20);	// 20

	return 0;
}
  • 全缺省参数
#include <iostream>
using namespace std;

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

int main() {

	Func();
	Func(100);
	Func(100 , 200);
	Func(100 , 200 , 300);

	return 0;
}

在这里插入图片描述

  • 半缺省参数
void Func(int a , int b = 20, int c = 30) {
	cout << a << endl;
	cout << b << endl;
	cout << c << endl << endl;
}

ps: 半缺省参数必须从右向左依次来给出,不可以隔着给。缺省参数不能在函数声明和定义中同时出现(一般在声明中出现)


⭐️ 函数重载

c++ 允许在同一个作用域中声明功能类似的同名函数,这些同名函数的形参类型(参数个数、类型、顺序)不同, 常用来处理功能类似但数据类型不同的问题。

// 类型不同
int add(int a, int b) {

	return a + b;
}

double add(double a, double b) {

	return a + b;
}

// 顺序不同
void f(int a, char b) {
	cout << "void f(int a, char b)" << endl;
}

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

// 个数不同
void f() {
	cout << "void f()" << endl;
}
	
void f(int a) {
	cout << "void f(int a)" << endl;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/808249.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Open3D-ML自动驾驶点云目标检测与分割入门

当开始新的研究时&#xff0c;我的方法通常是测试不同的相关事物&#xff0c;直到有足够的经验让我开始将这些点联系起来。 在开始构建用于 3D 对象检测的自定义模型之前&#xff0c;我购买了一台 LiDAR 并处理了一些数据。 下一个明显的步骤是在我为自己的数据贴标签之前找出研…

6、Nginx实现反向代理

Nginx 反向代理是一种常见的应用场景&#xff0c;它允许 Nginx 作为中间服务器接收客户端的请求&#xff0c;并代理转发这些请求到后端的真实服务器。这种配置使得客户端只需要与 Nginx 交互&#xff0c;而后端服务器对客户端是透明的。 ngx_http_proxy_module&#xff1a; 将客…

无涯教程-jQuery - Pulsate方法函数

Pulsate 效果可以与effect()方法一起使用。这会使元素的不透明性产生多次脉冲。 Pulsate - 语法 selector.effect( "pulsate", {arguments}, speed ); 这是所有参数的描述- times - 脉动的时间。默认值为3。model - 效果的模式。可以是"显示(show)"&a…

2023年的深度学习入门指南(22) - 百川大模型13B的运行及量化

2023年的深度学习入门指南(22) - 百川大模型13B的运行及量化 不知道上一讲的大段代码大家看晕了没有。但是如果你仔细看了会发现&#xff0c;其实代码还是不全的。比如分词器我们就没讲。 另外&#xff0c;13B比7B的改进点也没有讲。 再有&#xff0c;对于13B需要多少显存我们…

C++ Insights: 源码工具

godbolt&#xff1a;编译器资源管理器 godbolt是一个交互式工具&#xff0c;允许您在一个窗口中键入代码&#xff0c;并在另一个窗口中查看其编译结果。https://godbolt.org/https://github.com/compiler-explorer/compiler-explorer/wiki C Insights - See your source cod…

IDEA debug总结

调试一次编程题&#xff0c;发现没有掌握debug技巧&#xff0c;确实费事&#xff0c;做一次总结&#xff0c;方便以后回顾。 Run to Cursor 跳到光标处&#xff0c;适用于快速跳过循环&#xff0c;定位到光标处&#xff0c;而不用到处打断点&#xff0c;使用断点跳转。非常实…

基于注解的 SpringMVC

SpringMVC SpringMVC使用SpringMVC的两个配置EnableWebMVC 和 ACWACSpringMVC执行流程接收请求参数Postman 发包工具&#xff08;&#xff09;get 请求---简单类型数据&#xff08;基本数据类型和String&#xff09;get 请求---对象类型数据get 请求---数组类型get 请求 --- 集…

Android 面试题 内存泄露的原因 二

&#x1f525; 什么是内存泄漏 &#x1f525; 在Android开发过程中&#xff0c;当一个对象已经不需要再使用了&#xff0c;本该被回收时&#xff0c;而另个正在使用的对象持有它引用从而导致它不能被回收&#xff0c;这就导致本该被回收的对象不能被回收而停留在堆内存中&#…

关于提示词 Prompt

Prompt原则 原则1 提供清晰明确的指示 注意在提示词中添加正确的分割符号 prompt """ 请给出下面文本的摘要&#xff1a; <你的文本> """可以指定输出格式&#xff0c;如&#xff1a;Json、HTML提示词中可以提供少量实例&#xff0c;…

漏洞发现-BurpSuite插件-Fiora+Fastjson+Shiro

BurpSuite插件安装 插件&#xff1a;Fiora Fiora是LoL中的无双剑姬的名字&#xff0c;她善于发现对手防守弱点&#xff0c;实现精准打击。该项目为PoC框架nuclei提供图形界面&#xff0c;实现快速搜索、一键运行等功能&#xff0c;提升nuclei的使用体验。 该程序即可作为burp插…

剑指Offer 43. !! 1~n 整数中 1 出现的次数

剑指 Offer 43. 1&#xff5e;n 整数中 1 出现的次数 困难 446 相关企业 输入一个整数 n &#xff0c;求1&#xff5e;n这n个整数的十进制表示中1出现的次数。 例如&#xff0c;输入12&#xff0c;1&#xff5e;12这些整数中包含1 的数字有1、10、11和12&#xff0c;1一共出现…

【LeetCode】160.相交链表

题目 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;函数返回结…

OpenLayers入门,OpenLayers鼠标移动事件使用,实现鼠标移动到点位上方后高亮显示点位要素

专栏目录: OpenLayers入门教程汇总目录 前言 本章主要讲解OpenLayers鼠标移动事件的使用,并简单实现鼠标移动到点位上方后高亮显示点位要素的功能,带领大家快速上手OpenLayers鼠标移动事件的应用。 二、依赖和使用 "ol": "^6.15.1"使用npm安装依赖…

勒索病毒最新变种.locked勒索病毒来袭,如何恢复受感染的数据?

引言&#xff1a; 在数字时代&#xff0c;黑客们的阴谋不断蔓延&#xff0c;其中.locked勒索病毒是备受关注的黑暗力量。它们犹如黑夜中的黑暗之星&#xff0c;迅速将用户的数据加密&#xff0c;要挟赎金。本文91数据恢复将深入揭示.locked勒索病毒的独特之处&#xff0c;并探…

C++设计模式::代理模式(combination)-可运行

实现: 1) cImage:抽象类; cImageReal:派生类, 不可直接实例化; cImageProxy:派生代理类, 可直接实例化用来代理cImageReal; NOTICE:派生代理类用来简化对特定派生类的使用. 使用: 实例化代理类, 然后使用. 1) 设计框架 /*image.hpp*/ #pragma once #…

解决Django报错 : No module named ‘MySQLdb‘

Django的版本是2.0&#xff0c;Python的版本号是3.6.4 在models.py创建好了模型类之后使用命令&#xff1a;python manage.py makemigrations 进行迁移&#xff0c;但是突然报错&#xff1a;ImportError:No module named MySQLdb 查询了相关资料发现python2.x版本是支持mysql…

条款38:对变化多端的线程句柄析构函数行为保持关注

条款37解释过&#xff0c;可联结的线程对应着一个底层系统执行线程&#xff0c;未推迟任务&#xff08;参见条款36&#xff09;的期值和系统线程有类似关系。这么一来&#xff0c;std::thread型别对象和期值对象都可以视作系统线程的句柄。 从这个视角来看&#xff0c;std::th…

springboot中配置bpmsjs插件-activiti7流程图绘制插件/IDEA中运行bpmnjs

BPMNJS的安装和使用需要依赖nodejs插件,需要先安装NODEJS,因为bpmnjs插件的运行需要使用到NODEJS中的npm命令。 安装nodejs 安装和使用bpmnjs插件,绘制activiti工作流需要的流程图。 1、安装和配置nodejs 2.1、下载nodejs https://nodejs.org/en 1.2、安装nodejs,默认安…

基于 Docker 的深度学习环境:Windows 篇

本篇文章&#xff0c;我们聊聊如何在 Windows 环境下使用 Docker 作为深度学习环境&#xff0c;以及快速运行 SDXL 1.0 正式版&#xff0c;可能是目前网上比较简单的 Docker、WSL2 配置教程啦。 写在前面 早些时候&#xff0c;写过一篇《基于 Docker 的深度学习环境&#xff…

C++设计模式::享元模式(combination)-可运行

实现: 1) cShape:抽象接口; cShape*:具体实现的接口; 2) cFactory:按照传入参数color来区别对象, 如果已经创建过, 那就返回已有的, 否则创建新的. 使用: 传入参数, 获取被创建的对象(创建尽可能少的对象) 1) 设计框架 /*shape.hpp*/ #pragma once #if…