【C++】入门一

从这篇博客开始,我们就要进入C++的大门了,C++看这名字就是对于C语言的补充和升级,所以我们在C++的编译器上时可以执行C语言的
话不多说,我们先来打印一个hello world

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

我们只要学过C语言,就可以看懂包含头文件和主函数,看不懂的就是using这句和主函数中的那句。
using这一句实际上就是使用叫做std的命名空间的意思,std是官方定义的一个命名空间
那么定义命名空间的意思是什么呢?我们来看下面这一段C语言代码

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

我这么写是完全可以的,但是当我包含上time.h这个头文件后就不可以了,因为time.h中有一个函数,函数名是time,这样的话名字就相同了C语言是不支持名字相同的。其实不仅是一个程序员写的和库中的可能会冲突,当我们写一个大的工程时,不同的程序员之间定义的变量名和函数名也会冲突,所以我们的C++祖师爷为了处理这个问题,就引用了命名空间这个概念。
那么我们如何去定义一个命名空间呢?

namespace jxh {int a = 0;int Add(int x, int y) {return x + y;}struct Node {int data;struct Node* next;};
}

就是namespace加上一个你喜欢的一个单词或者是名字,我这里用的是我名字的缩写,我们在这个命名空间里可以去定义变量,函数,结构体等等
那我们应该如何去使用呢?

#include<iostream>
namespace jxh {int a = 0;int Add(int x, int y) {return x + y;}struct Node {int data;struct Node* next;};
}
using namespace jxh;
int main() {printf("%d", a);return 0;
}
#include<iostream>
namespace jxh {int a = 0;int Add(int x, int y) {return x + y;}struct Node {int data;struct Node* next;};
}
int main() {printf("%d", jxh::a);return 0;
}

这两种方法都是可以正常使用的,但是我们要介绍一下::这个符号,它是由两个冒号构成的,叫做域作用限定符,就表示在jxh这个命名空间内的a变量,这样编译器就可以找到并使用了。

	struct jxh::Node node1;

当然我们要使用结构体的话要这么用(其实C++管结构体叫做类,我们在以后的博客中会解释),因为struct本身就是一个关键字,它并不是定义在jxh中的
并且命名空间还可以嵌套使用,就是在命名空间中定义命名空间

#include<iostream>
namespace jxh {int a = 0;namespace jxh1 {int a = 10;}
}
int main() {printf("%d", jxh::jxh1::a);return 0;
}

接着我们的hello world说,这里的std就是C++官方定义的一个命名空间,里面包含很多东西,其中就包括下面的cout 和endl,所以我们要使用cout等时,可以用using,也可以用::域作用限定符,只不过用using的话就将std中的全部东西都暴露出来了,用域限定作用符会比较安全一些

#include<iostream>
int main() {std::cout << "Hello world" << std::endl;return 0;
}

然后cout中的c就是console,意思是控制台,out就是输出的意思,<<这个符号是流插入,就是把后面的流到控制台中,就是输出到控制台中。后面的endl其实就相当于换行(l就是line,end line就是结束一行),就是std里边定义的,当然之前用’\n’换行的方法也是适用的

#include<iostream>
int main() {std::cout << "Hello world" << '\n';//"\n"return 0;
}

另外再提一下,<<这个符号可以自动识别类型,就是各种类型都可以直接打印

#include<iostream>
using namespace std;
int main() {int a = 1;double b = 1.1;cout << a << endl<< b << endl;return 0;
}

有类似与printf的,那么自然有类似与scanf的,就是>>叫做流提取

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

这样就可以给a b输入值了
最后我们在说一下如果要函数声明和定义分装到两个文件,那么这时命名空间应该怎么用呢?
这时.cpp文件和.h文件中都使用一个命名空间把它们包含起来就可以了,编译器最后执行时会把相同命名空间的代码进行合并。最简单的,一个文件中也可以定义相同的命名空间

#include<iostream>
namespace jxh {int a = 10;
}
namespace jxh {int b = 20;
}
using namespace std;
using namespace jxh;
int main() {cout << a << endl << b << endl;return 0;
}

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

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

相关文章

继承、多态

复习 需求&#xff1a; 编写一个抽象类&#xff1a;职员Employee,其中定义showSalary(int s)抽象方法&#xff1b;编写Employee的子类&#xff0c;分别是销售员Sales和经理Manager,分别在子类中实现对父类抽象方法的重写&#xff0c;并编写测试类Test查看输出结果 package cn.…

某头部通信企业:SDLC+模糊测试,保障数实融合安全发展

某头部通信企业是全球领先的综合通信信息解决方案提供商&#xff0c;为全球电信运营商、政企客户和消费者提供创新的技术与产品解决方案。该企业持续关注核心技术攻关&#xff0c;深入打造系列化标杆项目和价值场景&#xff0c;加强数字化平台的推广应用&#xff0c;加快共建开…

uniapp系列

MQTT&#xff1a; 1、报错&#xff1a;TypeError: WebSocket is not a constructor 背景&#xff1a;最近使用MQTT协议传递消息&#xff0c;集成在uniapp上&#xff0c;出现此问题 解决&#xff1a;app端需要用"wx://"&#xff08;安全协议用"wxs://"&a…

【机器学习基础】多元线性回归(适合初学者的保姆级文章)

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;专栏&#xff1a;机器学习 欢迎订阅&#xff01;后面的内容会越来越有意思~ &#x1f4a1;往期推荐&#xff1a; 【机器学习基础】机器学习入门&#xff08;1&#xff09; 【机器学习基…

FreeSWITCH案例跟踪之一,sip bye发不出去

报故障的说&#xff0c;网关呼叫fs&#xff0c;网关收不到fs的sip bye Wireshark看call-flow, 是这样的&#xff1a; INVITE里面的contact是<sip:172.23.4.109:5060;transporttcp> 于是Wireshark设置过滤条件为ip.addr 172.23.4.109 and tcp.port 5060 fs tcp连网关被…

【前端】使用json-server报错

当我们使用json-server模仿后端接口时需要运行json-server --watch index.json这个命令生成增删改查接口但是可能会报这个错误&#xff0c;如图 这时我们运行 npm i json-server -g命令即可&#xff0c;然后再重新运行json-server --watch index.json就行了

基于SSM的校园家教兼职信息交流平台设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

深入探索 Django Channels

概要 随着 Web 应用的发展&#xff0c;实时功能如即时消息、实时通知等变得越来越重要。Django Channels 是 Django 的一个扩展&#xff0c;它使得在 Django 中构建实时功能变得可能。本文将深入探讨 Django Channels 的核心概念、架构以及如何实现一个实时应用。 1. Django C…

2023亚太杯数学建模思路 - 复盘:光照强度计算的优化模型

文章目录 0 赛题思路1 问题要求2 假设约定3 符号约定4 建立模型5 模型求解6 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 问题要求 现在已知一个教室长为15米&#xff0c;宽为12米&…

基于纵横交叉算法优化概率神经网络PNN的分类预测 - 附代码

基于纵横交叉算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于纵横交叉算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于纵横交叉优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

2760. 最长奇偶子数组 : 抽丝剥茧,图解双指针做法正确性

题目描述 这是 LeetCode 上的 「2698. 求一个整数的惩罚数」 &#xff0c;难度为 「简单」。 Tag : 「双指针」、「滑动窗口」 给你一个下标从 开始的整数数组 nums 和一个整数 threshold。 请你从 nums 的子数组中找出以下标 l 开头、下标 r 结尾 ( ) 且满足以下条件的 最长子…

ssd202d-logo-cmd_bootlogo分析

cmd_bootlogo.c运行过程 common/autoboot.c:593: disp_logo(0); sprintf(cmd_str, "bootlogo %d 1 0 0 0", logo_id); do_display函数 获取对应结构体,里面有各种参数

ARM 自动资源管理

Java 7 增加了一个新特性&#xff0c;该特性提供了另外一种管理资源的方式&#xff0c;这种方式能自动关闭文件。这个特性有时被称为自动资源管理(Automatic Resource Management, ARM)&#xff0c; 该特性以 try 语句的扩展版为基础。自动资源管理主要用于当不再需要文件&…

Android R.fraction

来源 我是在看Android10原生代码&#xff0c;绘制状态栏蓝牙电量相关类中第一次看到R.fraction的&#xff0c;如类BatteryMeterDrawable <fraction name"battery_button_height_fraction">10%</fraction> mButtonHeightFraction context.getResources(…

虹科方案 | 从概念到生产的自动驾驶软件在环(SiL)测试解决方案

来源&#xff1a;雅名特自动驾驶 虹科方案 | 从概念到生产的自动驾驶软件在环&#xff08;SiL&#xff09;测试解决方案 自动驾驶软件在环&#xff08;SiL&#xff09;测试解决方案 自动驾驶软件在环&#xff08;SiL&#xff09;测试解决方案能够研究和验证高历程实验和恶劣驾…

Maven分离资源文件

Spring Boot 项目默认的会将所有资源文件、依赖文件、配置文件等打包成单一的 jar 文件&#xff0c;但是有时候我们并不想让配置文件、依赖包都跟可执行文件打包到一起。 这时候可以在 pom.xml 文件中进行配置&#xff0c;从而使资源文件、依赖包和可执行文件分离。 本文主要…

未来服务器操作系统的趋势与展望

摘要&#xff1a; 随着云计算、大数据和人工智能不断的发展&#xff0c;服务器操作系统也需要随之进行新一轮的升级。本文通过分析当前服务器操作系统的现状&#xff0c;探讨了未来服务器操作系统的趋势和展望&#xff0c;并针对一些关键问题提出了解决方案。 一、引言 服务器…

Oracle OCP / MySQL OCP认证容易通过吗

诸多学员在首次考OCP时&#xff0c;不清楚要如何选择。在本文中&#xff0c;我会为大家进行讲解&#xff01; 选择OCP认证时需要考虑的几大项目&#xff1a; 授课老师师资经验 课程大纲 试听课程 考试通过率 业界口碑 服务质量 郭一军老师的OCP培训在业界培训的学员中已…

[Jenkins] Docker 安装Jenkins及迁移流程

系统要求 最低推荐配置: 256MB可用内存1GB可用磁盘空间(作为一个Docker容器运行jenkins的话推荐10GB) 为小团队推荐的硬件配置: 1GB可用内存50 GB 可用磁盘空间 软件配置: Java 8—无论是Java运行时环境&#xff08;JRE&#xff09;还是Java开发工具包&#xff08;JDK&#xff…

Ubuntu 安装VMware Tools选项显示灰色,如何安装VMware Tools

只要你的网络没问题&#xff0c;你直接执行这几个命令&#xff0c;重启ubuntu虚拟机即可、 sudo dpkg --configure -a sudo apt-get autoremove open-vm-tools sudo apt-get install open-vm-tools sudo apt-get install open-vm-tools-desktop