前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >初识c++:入门基础

初识c++:入门基础

作者头像
用户11290664
发布2024-09-25 13:35:32
590
发布2024-09-25 13:35:32
举报
文章被收录于专栏:学习

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

一.第一个c++程序

做好准备我们来写一个Hello world

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

二.命名空间 namespace

命名空间的价值

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

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

代码语言:javascript
复制
#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系列 编译器是这样的,其他编译器可能会报错。

代码语言:javascript
复制
	int a;
	int b;
	char c;
	

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

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

代码语言:javascript
复制
#include<iostream>
using namespace std;

四.缺省参数

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

举个列子 全缺省:

代码语言:javascript
复制
#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,此时我们不传参,在方法定义中赋值,这就叫缺省参数。 结果为:

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

代码语言:javascript
复制
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++确实更加便捷,以后内容更精彩 。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.第一个c++程序
  • 二.命名空间 namespace
  • 三.C++输⼊&输出
  • 四.缺省参数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档