初识c++:入门基础

ops/2024/9/23 4:37:24/

打字不易,留个赞再走吧~~
在这里插入图片描述

目录

  • 一.第一个c++程序
  • 二.命名空间 namespace
  • 三.C++输⼊&输出
  • 四.缺省参数

C++兼容C语⾔绝⼤多数的语法,所以C语⾔实现的hello world依旧可以运⾏,C++中需要把定义⽂件
代码后缀改为.cpp

一.第一个c++程序

在这里插入图片描述

做好准备我们来写一个Hello world
在这里插入图片描述

也许你会看不懂,下面 来讲解。

二.命名空间 namespace

命名空间的价值

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

在以前写c的程序时我们会遇到这样的问题:

#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
int rand = 10;
int main()
{
// 编译报错:error C2365: “rand”: 重定义;以前的定义是“函数”
printf("%d\n", rand);
return 0;
}

因为我们在标准库中有了rand()函数,所以命名冲突,不能使用rand变量来赋值。

在这里插入图片描述

我们 可以用namespace义一个命名空间,里面可以写多个方法(函数),变量,结构体,这时候我们引用这些东西时候 要指名命名空间名,然后再加上引用类型,中间要用::隔开。如图我们在打印way库中的方法Add1()和Add2()时候都用::分开。因为cont(输出函数),endl(换行符),都是在命名空间std中,它们都在中相当于c语言中的<stdio.h>所以我们在这里加上std::cout或者是std::endl。至于<<是什么意思以后再做讨论

我们也可以展开命名空间这样就不用反复调用命名空间,直接调用其方法。

方法为using namespace 命名空间的名称

上面优化后代码为
在这里插入图片描述

三.C++输⼊&输出

在了解c++输入输出格式之前我们要先了解这些:

是 Input Output Stream 的缩写,是标准的输⼊、输出流库,定义了标准的输⼊、输
出对象。
• std::cin 是 istream 类的对象,它主要⾯向窄字符(narrow characters (of type char))的标准输
⼊流。
• std::cout 是 ostream 类的对象,它主要⾯向窄字符的标准输出流。
• std::endl 是⼀个函数,流插⼊输出时,相当于插⼊⼀个换⾏字符加刷新缓冲区。
• <<是流插⼊运算符,>>是流提取运算符。(C语⾔还⽤这两个运算符做位运算左移/右移)
• 使⽤C++输⼊输出更⽅便,不需要像printf/scanf输⼊输出时那样,需要⼿动指定格式,C++的输⼊
输出可以⾃动识别变量类型(本质是通过函数重载实现的,这个以后会讲到),其实最重要的是
C++的流能更好的⽀持⾃定义类型对象的输⼊输出。
• IO流涉及类和对象,运算符重载、继承等很多⾯向对象的知识,这些知识我们还没有讲解,所以这
⾥我们只能简单认识⼀下C++ IO流的⽤法,后⾯我们会有专⻔的⼀个章节来细节IO流库。
• cout/cin/endl等都属于C++标准库,C++标准库都放在⼀个叫std(standard)的命名空间中,所以要
通过命名空间的使⽤⽅式去⽤他们。
• ⼀般⽇常练习中我们可以using namespace std,实际项⽬开发中不建议using namespace std。
• 这⾥我们没有包含<stdio.h>,也可以使⽤printf和scanf,在包含间接包含了。vs系列
编译器是这样的,其他编译器可能会报错。

int a;int b;char c;cin >> a;
cin >> b >> c;
cout << a << endl;
cout <<b<<" "<<c<< endl;

上面代码cin就相当于scanf函数,和scanf函数不同的是他不需要指定占位符,你定义什么面数据,就可以输出什么数据。它会自动识别,换行符,空格,来识别你的数据。
当然它也在std标准库里,不要忘记

#include<iostream>
using namespace std;

四.缺省参数

缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调⽤该函数时,如果没有指定实参
则采⽤该形参的缺省值,否则使⽤指定的实参,缺省参数分为全缺省和半缺省参数。(有些地⽅把
缺省参数也叫默认参数)
• 全缺省就是全部形参给缺省值,半缺省就是部分形参给缺省值。C++规定半缺省参数必须从右往左
依次连续缺省,不能间隔跳跃给缺省值。
• 带缺省参数的函数调⽤,C++规定必须从左到右依次给实参,不能跳跃给实参。
• 函数声明和定义分离时,缺省参数不能在函数声明和定义中同时出现,规定必须函数声明给缺省
值。

举个列子
全缺省:

#include<iostream>
using namespace std;namespace Way {int Add1(int a = 1, int b = 2) {return a + b;}
}
int  main(){cout << Way::Add1() << endl;}

这就是刚刚我们写的Add1,此时我们不传参,在方法定义中赋值,这就叫缺省参数。
结果为:在这里插入图片描述

半缺省我们赋值一个另一个用缺省,注意只能从左边缺省不能从右边
还是刚刚列子,稍微修改一下

namespace Way {int Add1(int a  int b = 2) {return a + b;}
}
int  main(){cout << Way::Add1(3) << endl;}

这时候传参a为3,加上缺省参数b为2,期望结果为5.

在这里插入图片描述

这次博客我们写了第一个c++程序,了解了命名空间 namespace
C++输⼊&输出。最后知道了缺省参数,这样看来c++确实更加便捷,以后内容更精彩


http://www.ppmy.cn/ops/110696.html

相关文章

干货 | Selenium+chrome自动批量下载地理空间数据云影像

1.背景介绍 1.1地理空间数据云 由中国科学院计算机网络信息中心科学数据中心成立的地理空间数据云平台是常见的下载空间数据的平台之一。其提供了较为完善的公开数据&#xff0c;如LANDSAT系列数据&#xff0c;MODIS的标准产品及其合成产品&#xff0c;DEM数据&#xff08;SR…

SpringBoot框架下的房产销售系统开发

第一章 绪 论 1.1背景及意义 房产销售也都将通过计算机进行整体智能化操作&#xff0c;对于房产销售系统所牵扯的管理及数据保存都是非常多的&#xff0c;例如管理员&#xff1b;首页、个人中心、用户管理、销售经理管理、房源信息管理、房源类型管理、房子户型管理、交易订单管…

立足本土,面向全球 | 全视通闪耀亮相Medical Fair Asia新加坡医疗展

Medical Fair Asia是亚洲地区最大的医疗设备、医疗器械和医疗技术展览会之一&#xff0c;自1997年创办以来&#xff0c;每两年在新加坡举办一次。该展会不仅是新加坡医疗行业交流的龙头平台&#xff0c;也是亚洲乃至全球医疗企业和专业人士共聚一堂、展示最新产品和技术的重要舞…

WebShell流量特征检测_菜刀篇

什么是一句话木马&#xff1f; 1、定义 顾名思义就是执行恶意指令的木马&#xff0c;通过技术手段上传到指定服务器并可以正常访问&#xff0c;将我们需要服务器执行的命令上传并执行 2、特点 短小精悍&#xff0c;功能强大&#xff0c;隐蔽性非常好 3、举例 php一句话木…

‌汽车的舒适进入功能是什么意思?

移动管家汽车的舒适进入系统是指无钥匙进入功能&#xff0c;它允许驾驶者在距离车辆一定范围内自动感应解锁车辆&#xff0c;并具备无钥匙启动功能‌。舒适进入系统的核心优势包括&#xff1a; ‌智能化操作‌&#xff1a;无需传统钥匙&#xff0c;通过智能感应实现车门解锁和…

【Qt 编程入门】如何用 Qt 实现一个基本的计算器

前言 QT中实现一个简单的计算器是一个比较好的练手项目&#xff0c;下面是源码&#xff1a; Calculator计算器 设计界面 待实现的界面主要包含两个部分&#xff1a; 输入输出栏用户点击的按钮 输入输出栏通过QLabel类实现&#xff0c;而用户点击按钮通过QPushButton或QToo…

基于JavaWeb开发的java springboot+mybatis电影售票网站管理系统前台+后台设计和实现

基于JavaWeb开发的java springbootmybatis电影售票网站管理系统前台后台设计和实现 &#x1f345; 作者主页 网顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获…

python测试开发---vue基础

一、什么是 Vue.js&#xff1f; Vue.js&#xff08;读作 /vjuː/ 像 view&#xff09;是一个用于构建用户界面的渐进式 JavaScript 框架。它的核心是一个可以渐进使用的库&#xff0c;既可以应用在一个简单的小项目里&#xff0c;也可以用来开发复杂的单页面应用&#xff08;S…