C++入门 (1) >>命名空间与缺省参数

1.   c++与c语言的区别

c++兼容c语言90%以上的语法与规则,c语言相当于用锤子和凿子制作工艺品,c++相当于用电钻,电动雕刻刀制作工艺品。

2.   c++的框架


#include<iostream>     //stdio.h的升级版
using namespace std;   //展开命名空间stdint main()
{//主程序return 0;
}

2.1   关于iostream

io  即  in、out,stream 即 流,连在一起就是输入输出流。是stdio.h(标准输入输出)的升级版本。

2.1   关于using namespace std

using namespace std 直接翻译就是   使用--命名空间--std,通常叫做----->展开命名空间--std。

3.   命名空间概述

#include<iostream>     //stdio.h的升级版
using namespace std;   //展开命名空间stdnamespace abc
{int a = 10;int b = 3;
}int main()
{int a = 99;cout << a << endl;cout << abc::a << endl;return 0;
}

以上程序中,创建了一个abc的命名空间,里面有a=10,b=3  两个变量。在主函数中,可以定义相同名字的变量,并选择性的使用他们,需要使用命名空间内的a,就可以用空间名::变量名。(两个冒号)。

同样的,命名空间里可以使用函数和结构体等。

举个例子,在一个枪战游戏项目中,我负责的是自动步枪射击的模块,我老婆负责的是狙击枪的射击模块,自动步枪的射击是连续的,按下开枪键位连续发射子弹,而狙击枪是按一次发射一次子弹,如果没有命名空间,我们的射击函数名都叫shoot,那么我们俩的模块合并之后,在主程序中调用shoot到底是调用的哪个shoot ?

所以可以把两个人写的shoot分别放到自己的命名空间里,调用步枪的射击函数时可以用

我::shoot(…………); ,调用狙击枪的射击函数时可以用 我老婆::shoot(…………)。

3.1   命名空间的展开

1.   指定命名空间

参照下面的程序段

#include<iostream>     //stdio.h的升级版
using namespace std;   //展开命名空间stdnamespace 我
{void shoot(){cout << "我的shoot" << endl;}
}namespace 我老婆
{void shoot(){cout << "我老婆的shoot" << endl;}
}int main()
{我老婆::shoot();我::shoot();return 0;
}

输出为

这种调用方式是指定命名空间的方法。

2.   指定命名空间的内容展开

这里的    using 我老婆::shoot就是指定展开了一个命名空间里的函数.

3.   展开整个命名空间

3.2   命名空间总结

1.指定命名空间

2.指定命名空间的内容展开

3.展开整个命名空间

4.   缺省函数

先看代码

#include<iostream>     //stdio.h的升级版
using namespace std;   //展开命名空间stdnamespace lty
{void shoot(int x, int a = 10, int b = 3){cout << x + a - b << endl;}
}int main()
{using namespace lty;shoot(1);return 0;
}

这段代码中,shoot的参数有3个,分别是x,a=10,b=3。默认情况下,我们调用shoot(1),输出结果为1+10-3==8。

所以缺省函数可以理解为,带有默认参数值的函数,并且参数中的默认参数值必须在后面。

这种写法是不对的:

因为默认参数在后面,所以调用shoot(5,8)的话,5是给a的,8是给b的,x的值是随机值。

传值是按顺序传的,所以int x必须放在前面,这样传1个值,默认就是给x赋值了。

4.1   全缺省和半缺省

全缺省函数就是----参数全部带有默认值的函数。

半缺省不用多说。

4.2   缺省函数的应用价值

在顺序表中,扩容的消耗非常大,需要不停的寻找新的空间并拷贝数据。

如果已经知道需要多大的空间,那么使用缺省参数就可以很方便的通过传参一次性扩容。

参见下面的代码

#include<iostream>
using namespace std;typedef int datatype;typedef struct stack
{datatype* lty;int num;int size;
}stack;//栈初始化
stack* stackinit(int a = 4)    //默认参数为4
{stack* tempstack=(stack*)malloc(sizeof(stack));datatype* tempdata = (datatype*)malloc(sizeof(datatype) * a);    //默认申请4个数据的空间tempstack->lty = tempdata;tempstack->num=0;tempstack->size = a;return tempstack;
}int main()
{stack* lty = stackinit(20);  //直接申请20个数据的空间for (int k = 0; k < 20; k++){lty->lty[k] = k + k;}lty->num = 20;for (int k = 0; k < 20; k++) //输出栈内的数据{cout << lty->lty[k] << "-->";}return 0;
}

函数默认参数为a=4;那么调用函数不传值初始化,默认开辟4个数据的空间。

传20给stackinit,就会开辟20个数据的空间。

完毕

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

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

相关文章

【笔记】Python学习记录

Python学习记录 Hello World变量简单数据类型字符串大小写转换插入变量Tab和Enter删除前后空格删除前后缀 Hello World 老调调了&#xff0c;如何在终端输出信息呢&#xff1f; print("Hello World")Hello World变量 变量命名遵从代码变量命名通则&#xff0c;几乎…

3.27作业

1、完成下面类 #include <iostream> #include <cstring> using namespace std;class myString { private:char *str; //记录c风格的字符串int size; //记录字符串的实际长度 public://无参构造myString():size(10){str new char[size]; …

计算机网络安全 —— 非对称加密算法 RSA 和数字签名

一、非对称加密算法基本概念 ​ 在对称密钥系统中&#xff0c;两个参与者要共享同一个秘密密钥。但怎样才能做到这一点呢&#xff1f;一种是事先约定&#xff0c;另一种是用信使来传送。在高度自动化的大型计算机网络中&#xff0c;用信使来传送密钥显然是不合适的。如果事先约…

【动态规划】【卡特兰数】Leetcode 96. 不同的二叉搜索树

【动态规划】【卡特兰数】Leetcode 96. 不同的二叉搜索树 动态规划卡特兰数 ---------------&#x1f388;&#x1f388;96. 不同的二叉搜索树 题目链接&#x1f388;&#x1f388;------------------- 动态规划 &#x1f612;: 我的代码实现> 动规五部曲 ✒️确定dp数组…

Palindromes(回文、镜像字符串)

描述 A regular palindrome is a string of numbers or letters that is the same forward as backward. For example, the string "ABCDEDCBA" is a palindrome because it is the same when the string is read from left to right as when the string is read fr…

linux命令在线查询工具

您提供的链接是一个名为“Linux 命令在线查询工具 - 轻松查找命令信息”的在线工具页面。这个工具旨在帮助用户快速查找和了解Linux命令的详细信息&#xff0c;从而提高工作效率。 工具概述 Linux命令在线查询工具是一个便捷的资源&#xff0c;它允许用户通过简单的搜索功能来…

SpringMvc之映射器HandlerMapping

简介 在springmvc的处理流程中&#xff0c;第一步就是查询请求对应的映射器&#xff0c;然后组装成处理器链处理请求&#xff0c;本文意在梳理该过程 重要实现 HandlerMapping是一个接口&#xff0c;该接口用于通过HttpServletRequest寻找对应的处理器&#xff0c;接口介绍如下…

攻防世界逆向刷题

阅读须知&#xff1a; 探索者安全团队技术文章仅供参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作,由于传播、利用本公众号所提供的技术和信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者 本人负责&#xff0c;作者不为此承担任何责任,如…

使用`scipy.stats.wasserstein_distance`来计算两个一维分布之间的Earth Mover‘s Distance (EMD)距离

在Python中&#xff0c;计算Earth Mover’s Distance (EMD)通常使用scipy库中的scipy.stats.wasserstein_distance函数&#xff0c;该函数计算的是Wasserstein距离&#xff0c;它与EMD非常相似&#xff0c;都是用来衡量两个分布之间的距离。 以下是一个简单的Python程序例子&a…

超好用的快捷回复软件

随着直播经济和短视频平台的兴起&#xff0c;品牌营销阵地不再局限于传统的电商巨头——淘宝、天猫、京东和拼多多&#xff0c;越来越多的品牌正积极布局快手、抖音等新晋电商平台&#xff0c;同步打造社群矩阵以拓宽产品推广渠道。这种多维度的市场渗透策略有力地提升了品牌的…

C语言看完我这篇编译与链接就够啦!!!

1. 前言 Hello&#xff01;大家好我是小陈&#xff0c;今天来给大家介绍最详细的C语言编译与链接。 2. 编译和链接 我们通常用的编译器&#xff0c;比如Visual Sudio,这样的IDE(集成开发环境&#xff09;一般将编译和链接的过程一步完成&#xff0c;通常将这这种编译和链接合…

算法(6)KMP+trie

KMP&#xff1a; 最浅显易懂的 KMP 算法讲解_哔哩哔哩_bilibili 该视频使用python书写代码&#xff0c;不会python的小伙伴也可以看看了解kmp的大致思路。 问题描述&#xff1a; kmp&#xff1a;字符串匹配算法&#xff0c;用来找一个长字符串中出现了几次小字符串&#xf…

【机器学习300问】54、如何找到有效的组合特征?

一、为什么需要去寻找有效的组合特征&#xff1f; 因为并不是所有的特征组合都会意义&#xff0c;都能带来价值。 例如在房价预测场景中&#xff0c;卧室数量和浴室数量的比值有意义&#xff0c;但房屋面积与建造年份相组合作为新的组合特征&#xff0c;可能就没有实际含义&…

【ORB-SLAM3】在 Ubuntu20.04 上编译 ORM-SLAM3 并使用 D435i、EuRoC 和 TUM-VI 运行测试

【ORB-SLAM3】在 Ubuntu20.04 上编译 ORM-SLAM3 并使用 D435i、EuRoC 和 TUM-VI 运行测试 1 Prerequisites1.1 C11 or C0x Compiler1.2 Pangolin1.3 OpenCV1.4 Eigen3 2 安装 Intel RealSense™ SDK 2.02.1 测试设备2.2 编译源码安装 (Recommend)2.3 预编译包安装 3 编译 ORB-S…

PTA L2-037 包装机

一种自动包装机的结构如图 1 所示。首先机器中有 N 条轨道&#xff0c;放置了一些物品。轨道下面有一个筐。当某条轨道的按钮被按下时&#xff0c;活塞向左推动&#xff0c;将轨道尽头的一件物品推落筐中。当 0 号按钮被按下时&#xff0c;机械手将抓取筐顶部的一件物品&#x…

07、Lua 流程控制

Lua 流程控制 Lua 流程控制控制结构语句 Lua 流程控制 Lua编程语言流程控制语句通过程序设定一个或多个条件语句来设定。在条件为 true 时执行指定程序代码&#xff0c;在条件为 false 时执行其他指定代码。 以下是典型的流程控制流程图&#xff1a; 控制结构的条件表达式结…

vscode c++环境配置

1.基础软件安装 安装Visual Studio Code. 安装C拓展。点击在vscode界面最左侧的Extensions图标&#xff08;打开快捷键&#xff1a;ctrlshiftX&#xff09;&#xff0c;搜索“C/C”&#xff0c;点击进行安装。 确保已安装gcc. 一般ubuntu系统会预装gcc.在终端窗口中输入如下…

查立得源码如何去除版权

最近发现很多人百度&#xff1a;查立得源码如何去除版权。 每个源代码/软件都是有版权的&#xff0c;无法去除&#xff0c;我们也得尊重知识产权/劳动成果。 可以去除/修改的是&#xff1a;页面显示的版权信息,查立得底部信息均可自定义(一般conn.php可修改)。 另&#xff1…

Linux-2 Linux的权限

目录 1.什么是权限&#xff1f; 2.权限的本质 3.Linux中的用户 普通用户与root用户相互转换 普通用户不变root&#xff0c;以root身份执行一个命令 LInux中的角色 4.Linux文件的权限 5.快速掌握修改权限的做法 修改权限 6.对比权限有无表现 对于普通用户&#xf…

五分钟,零基础也能入门 Python 图像文字识别

一. 前言 最近在研究 Python 的一些功能 &#xff0c; 也尝试了一些有趣实现&#xff0c; 这一篇就从实践的角度来研究一下 Python 如何实现图片识别。 众所周知 &#xff0c; Python 的库真的老多了&#xff0c;其中在图像识别上比较突出的就是 OpenCV. 那么基于这个库我们…