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

C++入门1

命名空间

namespace关键字

下面有一段程序

#include<stdio.h>
#include<stdlib.h>int rand=0;   //当rand变量在main函数里面的话不会报错,因为在main函数里面时局部变量,//函数的作用域是全局,所以不会冲突
int main()
{printf("%d ",rand);return 0;
}

上面的这段程序在运行的时候会报错,在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。

// 编译后后报错:error C2365: “rand”: 重定义;以前的定义是“函数”

 于是,C++就引用了namespace关键字

namespace关键字的使用

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

namespace LH
{int rand=0;int add(int x,int y){return x+y;}struct node{int val;struct node*next;}}

比如下面的程序

#include<stdio.h>
#include<stdlib.h>namespace LH
{int rand = 0;
}
int main()
{printf("%d ",LH::rand);  // ::是作用域的意思,当::左边没有任何东西的时候,表示全局作用域return 0;
}

 输出结果为0,现在就不会报错了

namespace关键字还可以嵌套使用

namespace LHH
{namespace LH{int rand = 0;int add(int x, int y){return x + y;}}}
int main()
{printf("%d\n",LHH::LH::rand);printf("%d\n", LHH::LH::add(1, 2));return 0;
}

输出结果

unsing 作用域名称::变量

这个的作用是用于想省略作用域的写法

比如下面的程序

在上面的程序中,需要经常使用X变量,可以使用画圈的那句话,这样就可以避免写 LH::x,避免麻烦

不同文件里的namespace

在一个项目里面的不同文件里面,比如  test.h test.cpp 这种文件里面的话,如果命名空间相同的话,在使用的时候会合并在一起,是一个整体

缺省参数

int add(int x=1,int y=2)
{return x+y;
}

这种就是缺省参数,在调用函数的时候如果不传递参数,会使用上面的值

int main()
{int a=add();return 0;
}

上面a的值就应该是3,这种属于全缺省参数,

还有半省参数,

int add(int x,int y=1,int z=1)
{return x+y+z;
}

值得注意的是,在写半缺省参数的时候,只能从右往左缺参数

int main()
{int a=add(1);  //输出结果为3return 0;
}

cin和cout

这两个是C++里面用来输入和输出变量的,相当于C语言中的printf和scanf

在使用的时候加上using namespace std(但是这仅仅限于在平时的练习当中),大型的项目开发不建议,因为std是C++默认的标准,里面包含很多东西,会让项目的空间很大

#include<iostream>
//using namespace std;  不建议使用
using std::cin;
using std::cout;
using std::endl; //换行用的int main()
{int a = 0;int b = 0;cin >> a >> b;cout << a << " " << b << endl;return 0;
}

输入1 2

输出 1 2

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python处理Redis
  • 【数据结构】排序 —— 快速排序(quickSort)
  • 鸿蒙应用服务开发【钱包服务(ArkTS)】
  • Linux 的 Port Knocking 端口碰撞(端口敲门)
  • C++从入门到入土(四)--日期类的实现
  • OpenAI 称其在发布检测 ChatGPT 写作的工具时采取“审慎态度”
  • Java编程常见问题解析与代码示例
  • 基于whisper流式语音识别
  • 【Kubernetes】应用的部署(一):金丝雀部署
  • #70结构体案例1(导师,学生,成绩)
  • 交通预测数据文件梳理:METR-LA
  • Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED
  • 卷积神经网络(CNN)简单原理与简单代码实现
  • 人工智能自动驾驶三维车道线检测—PersFormer模型代码详解
  • 【算法模板】图论:Tarjan算法求割边割点
  • [译] 怎样写一个基础的编译器
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • ES6 学习笔记(一)let,const和解构赋值
  • Facebook AccountKit 接入的坑点
  • gops —— Go 程序诊断分析工具
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • JavaScript 奇技淫巧
  • Joomla 2.x, 3.x useful code cheatsheet
  • JSDuck 与 AngularJS 融合技巧
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Python socket服务器端、客户端传送信息
  • Python爬虫--- 1.3 BS4库的解析器
  • sessionStorage和localStorage
  • 看域名解析域名安全对SEO的影响
  • 前端临床手札——文件上传
  • 前端路由实现-history
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 使用Gradle第一次构建Java程序
  • 微信公众号开发小记——5.python微信红包
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • # 透过事物看本质的能力怎么培养?
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (1)常见O(n^2)排序算法解析
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (poj1.3.2)1791(构造法模拟)
  • (回溯) LeetCode 77. 组合
  • (算法)Travel Information Center
  • (杂交版)植物大战僵尸
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .net core 连接数据库,通过数据库生成Modell
  • .NET Framework 服务实现监控可观测性最佳实践
  • .net web项目 调用webService
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET_WebForm_layui控件使用及与webform联合使用
  • .Net6 Api Swagger配置
  • .NET多线程执行函数
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)