【c++】入门1

c++关键字

在这里插入图片描述

命名空间

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

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

当我们没有包含rand函数的头文件时,这个是没有任何问题的,因为定义的全局变量不会冲突。
在这里插入图片描述

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

现在包含头文件的话
#include <stdlib.h>
在这里插入图片描述

c语言没法解决这样的命名冲突问题,所以c++提出了namespace来解决。

命名空间定义

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。

#include<stdio.h>
#include<stdlib.h>namespace ggw
{struct node{int p1;struct node* next;};}
namespace zjw
{struct node{int p1;struct node* next;};}
int main()
{struct ggw::node t;struct zjw::node p;return 0;}

解决了命名冲突问题;

#include<stdio.h>
#include<stdlib.h>namespace ggw
{struct node{int p1;struct node* next;};int min = 5;}
namespace zjw
{struct node{int p1;struct node* next;};int min = 10;}
int main()
{struct ggw::node t;struct zjw::node p;printf("ggw中的%d\n",ggw::min);printf("zjw中的%d\n", zjw::min);return 0;}

使用不同的命名空间可以将同一个变量区分开,比如说ggw中的min和zjw中的min
在这里插入图片描述

命名空间可以嵌套

namespace zjw
{struct node{int p1;struct node* next;};namespace ret{int min = 10;}}
int main()
{struct ggw::node t;struct zjw::node p;printf("ggw中的%d\n",ggw::min);printf("zjw中的%d\n", zjw::ret::min);return 0;}

这里会多套一层,多加了一层作用域
在这里插入图片描述

1.当定义两个头文件里的变量包含在一起时,也会出现变量重复定义,相当于一个工程里面,有两个组分别进行工程的不同部分,当两个组用同一命名时候,就可以用到命名空间了。
2.当两个命名空间同名时,编译器会将两个合并成一个命名空间。

命名空间的使用

namespace ggw
{struct node{int p1;struct node* next;};int a = 3;int b = 4;int c = 5;
}

1.加命名空间名称及作用域限定符

int main()
{printf("%d\n",ggw::a);return 0;}

2.使用using将命名空间某个成员引入

using ggw::b;
int main()
{printf("%d\n", b);return 0;}

相当于将ggw命名空间中的b变量展成全局的(虽然理解不太对,以后再修改)
在这里插入图片描述
展开的话,再定义一个全局变量会出现重定义。

3.使用using namespace 命名空间名称引入。

using namespace ggw;int main()
{printf("%d\n", a);printf("%d\n", b);printf("%d\n", c);return 0;}

相当于将ggw命名空间中的所有变量展成全局的(虽然理解不太对,以后再修改),不建议全部展开

c++输入和输出

#include<iostream>
using namespace std;
int main()
{cout << "hello world" << endl;}

std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中
如果不使用using namespace std的话,那就要加上该函数所在的命名空间(作用域)

#include<iostream>
//using namespace std;
int main()
{std::cout << "hello world" << std::endl;}

说明:

  1. 使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含< iostream >头文件以及按命名空间使用方法使用std。
  2. cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含< iostream >头文件中。
  3. <<是流插入运算符,>>是流提取运算符。
  4. 使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。C++的输入输出可以自动识别变量类型

自动识别变量类型

#include<iostream>
using namespace std;
int main()
{int a;float b;double c;cin >> a;cin >> b;cin >> c;cout << a << endl;cout << b << endl;cout << c << endl;
}

在这里插入图片描述
不用向c语言printf找变量类型了。

std命名空间的使用惯例:
std是C++标准库的命名空间,如何展开std使用更合理呢?

  1. 在日常练习中,建议直接using namespace std即可,这样就很方便。
  2. using namespace std展开,标准库就全部暴露出来了,如果我们定义跟库重名的类型/对
    象/函数,就存在冲突问题。该问题在日常练习中很少出现,但是项目开发中代码较多、规模
    大,就很容易出现。所以建议在项目开发中使用,像std::cout这样使用时指定命名空间 +
    using std::cout展开常用的库对象/类型等方式。

缺省参数

缺省参数概念
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实
参则采用该形参的缺省值,否则使用指定的实参。

#include<iostream>
using namespace std;
void print(int c=50)
{cout << c << endl;}
int main()
{print(10);print();}

在这里插入图片描述
当函数有传参数过去时,就用传过去的形参,如果没有传过去的形参,采用该形参的缺省值。

缺省参数分类

全缺省参数

void print(int c=50,int b=20,int a=65)
{cout << c << endl;cout << b<< endl;cout << a << endl;}

半缺省参数

void print(int c,int b=20,int a=65)
{cout << c << endl;cout << b<< endl;cout << a << endl;}

缺省参数可用来初始化,比如栈的初始化。
在这里插入图片描述
当初始化栈没有参数时,使用缺省参数。

  1. 半缺省参数必须从右往左依次来给出,不能间隔着给
  2. 缺省参数不能在函数声明和定义中同时出现
  3. 缺省值必须是常量或者全局变量
  4. C语言不支持(编译器不支持)

在这里插入图片描述

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

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

相关文章

Kubernetes (四) 资源清单及yaml文件详解

一. 资源清单 二. 编写yaml文件及内容详解 常用命令 …

智能优化算法应用:基于驾驶训练算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于驾驶训练算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于驾驶训练算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.驾驶训练算法4.实验参数设定5.算法结果6.…

【论文笔记】3D Gaussian Splatting for Real-Time Radiance Field Rendering

原文链接&#xff1a;https://arxiv.org/abs/2308.04079 1. 引言 网孔和点是最常见的3D场景表达&#xff0c;因其是显式的且适合基于GPU/CUDA的快速栅格化。神经辐射场&#xff08;NeRF&#xff09;则建立连续的场景表达便于优化&#xff0c;但渲染时的随机采样耗时且引入噪声…

测试服务器带宽(ubuntu)

apt install python3 python3-pippip3 install speedtest-clispeestest-cli

Python模拟动态星空

前言 今天&#xff0c;我们来用Python做个星空。 一、模拟星空 1,.首先导入所需要的库&#xff1a; from turtle import * from random import random, randint 2.初始画面&#xff1a; screen Screen() width, height 800, 600 screen.setup(width, height) screen.tit…

使用Dependency Walker和Process Explorer排查瑞芯微工具软件RKPQTool.exe启动报错问题

目录 1、问题说明 2、使用Dependency Walker查看工具程序的库依赖关系 3、在可以运行的电脑上使用Process Explorer查看依赖的msvcr120.dll和msvcp120.dll库的路径 4、C/C运行时库介绍 5、可以下载安装VC_redist.x86.exe或VC_redist.x64.exe解决系统库缺失问题 C软件异常排…

thinkcmf 文件包含 x1.6.0-x2.2.3 已亲自复现

thinkcmf 文件包含 x1.6.0-x2.2.3 CVE-2019-16278 已亲自复现 漏洞名称漏洞描述影响版本 漏洞复现环境搭建漏洞利用 修复建议总结 漏洞名称 漏洞描述 ThinkCMF是一款基于PHPMYSQL开发的中文内容管理框架&#xff0c;底层采用ThinkPHP3.2.3构建。ThinkCMF提出灵活的应用机制&a…

智慧城市新型基础设施建设综合方案:文件全文52页,附下载

关键词&#xff1a;智慧城市建设方案&#xff0c;智慧城市发展的前景和趋势&#xff0c;智慧城市项目方案&#xff0c;智慧城市管理平台&#xff0c;数字化城市&#xff0c;城市数字化转型 一、智慧城市新基建建设背景 1、城市化进程加速&#xff1a;随着城市化进程的加速&am…

SpringBoot整合JWT+Spring Security+Redis实现登录拦截(二)权限认证

上篇博文中我们已经实现了登录拦截&#xff0c;接下来我们继续补充代码&#xff0c;实现权限的认证 一、RBAC权限模型 什么事RBAC权限模型&#xff1f; RBAC权限模型&#xff08;Role-Based Access Control&#xff09;即&#xff1a;基于角色的权限访问控制。在RBAC中&#x…

若依SQL Server开发使用教程

1. sys_menu表中的将菜单ID修改为自动ID,解决不能增加菜单的问题&#xff0c;操作流程如下&#xff1a; 解决方案如下 菜单栏->工具->选项 点击设计器&#xff0c;去掉阻止保存要求更新创建表的更改选项&#xff0c;点确认既可以保存了 2 自动生成代码找不表的解决方案…

Nature Perspective | LLMs 作为角色扮演引擎

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 随着对话智能体的表现越来越像人&#xff0c;我们必须开发出有效的方法&#xff0c;在不陷入拟人化陷阱的情况下&#xff0c;用高层次的术语描述它们的…

Dubbo入门直接上手,结合微服务详解

Dubbo 高性能、轻量级的 Java RPC 框架 RPC&#xff1a; Remote Procedure Call 远程过程调用&#xff0c;简单来说就是它允许一个计算机程序通过网络请求调用另一个计算机上的程序&#xff0c;就像本地调用一样。有非常多的协议和技术来都实现了RPC的过程&#xff0c;比如&a…

【大数据存储与处理】开卷考试总复习笔记

文章目录 实验部分一、 HBase 的基本操作1. HBase Shell入门2. HBase创建数据库表3. HBase数据操作4. HBase删除数据库表5. HBase Python基本编程 before二、 HBase 过滤器操作1.创建表和插入数据2.行键过滤器3.列族与列过滤器4.值过滤器5.其他过滤器6.python hbase 过滤器编程…

Kubernetes(K8S)快速入门

概述 在本门课程中&#xff0c;我们将会学习K8S一些非常重要和核心概念&#xff0c;已经操作这些核心概念对应组件的相关命令和方式。比如Deploy部署&#xff0c;Pod容器&#xff0c;调度器&#xff0c;Service服务&#xff0c;Node集群节点&#xff0c;Helm包管理器等等。 在…

程序员收入与支出 对比分析网红的收入来源

无法收回&#xff0c;就不要花出去。钱只花在增值的事上。 保证一年基本生存的钱不能花。 大额支出要全家协商一致才能花。&#xff08;别把全家坑了&#xff09; 作为程序员&#xff0c;您的收入和支出可以从以下几个方面来考虑&#xff1a; 收入 基本薪资&#xff1a;这是…

C# 使用Pipelines处理Socket数据包

写在前面 在上一篇中对Pipelines进行简单的了解&#xff0c;同时也留下了未解的问题&#xff0c;如何将Pipelines类库运用到Socket通讯过程中来解决粘包和分包。链接地址如下&#xff1a; 初识System.IO.Pipelines https://rjcql.blog.csdn.net/article/details/135211047 这…

【Web API系列】使用getDisplayMedia来实现录屏功能

文章目录 前言一、认识getD该处使用的url网络请求的数据。二、使用步骤1.使用方法一实现录屏2.使用方法二实现录屏3. 运行效果 延伸 前言 Web API经过长期的发展&#xff0c;尤其是最近&#xff0c;发展相当迅猛&#xff0c;现在已经支持很多功能了&#xff0c;一些原生就支持…

IRIS、Cache系统类汉化

文章目录 系统类汉化简介标签说明汉化系统包说明效果展示类分类%Library包下的类重点类非重点类弃用类数据类型类工具类 使用说明 系统类汉化 简介 帮助小伙伴更加容易理解后台系统程序方法使用&#xff0c;降低代码的难度。符合本土化中文环境的开发和维护&#xff0c;有助于…

月入7K, 95后护士转行网优,疫情之后,我选择辞掉“铁饭碗”

成为一个三甲医院的护士是什么体验&#xff1f; 如果你一毕业后就进入一家三甲医院&#xff0c;你可能会享受到稳定的就业环境、近在咫尺的机会与资源。 看似稳定与不错的薪资待遇&#xff0c;成为疫情之后普通打工人挤破脑袋也要进入的存在。似乎也能理解各地医院招聘时动辄80…

每日一题-----逆序字符串

大家好我是Beilef&#xff0c;在一个美好的下午我意外接触到编程并且产生了兴趣&#xff0c;哈哈我要努力成为一个跨界者&#xff0c;让我们一起加油吧O(∩_∩)O 文章目录 目录 文章目录 前言 大家好请上车 一、逆序字符串 题⽬描述&#xff1a; 输⼊⼀个字符串&#xff0c;写…