《初识C++——第一篇》

一 C++是什么?    

        C++是一种高效、灵活的通用编程语言,由Bjarne Stroustrup于1983年扩展自C语言,支持面向对象(OOP)泛型编程底层内存操作。它被广泛应用于:

  • 游戏开发(如Unreal Engine)

  • 操作系统(Windows/Linux内核模块)

  • 高性能服务器

  • 嵌入式系统

C++ vs C语言
C++兼容C语法,但引入了类、继承、多态等OOP特性,以及STL标准模板库等高效工具。

二 C++的第一个程序

        先来看看下面两个代码,分别是用C和C++写的,可以看到有许多不同,这些不同包括头文件啊,输入等等。

C语言

#include<stdio.h>
int main()
{
	printf("hello world");
	return 0;
}

C++ -----有一套自己的输入输出格式

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

三  命名空间

        在我们写代码时,越往后写的程序代码量就会越来越多,什么变量名啊,函数名啊等等,他们都存在全局作用域中,就有可能会导致冲突。C++在针对这方面问题引入了 namespace使用这个可以有效的处理命名冲突问题,接下来我们来看几段代码来去学会怎么使用,命名冲突是什么?

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

这段代码在不引入头文件时运行结过是10,但是引入头文件之后却报错了

这个时候我们就可以使用 namespace来定义一个域来区分这两个,那如何去定义域呢?

#include<stdio.h>
#include<stdlib.h>
namespace cqy
{
	int malloc = 10;
}
int main()
{
	printf("%d ",cqy::malloc);
	return 0;
}

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

        命名空间中可以定义变量/函数/类型等。 namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下⾯的malloc不在冲突了

        需要注意的是,我们在使用域中的变量时需要再变量的前面加上前缀,就是 域名 ::,如果前面不加域名,那么还是调用的是库里面的函数malloc;

        在域中我们也可以嵌套其他子域,例如下面代码

namespace cqy
{
	namespace wj
	{
		int a=5;
	}
	namespace gt
	{
		int a=10;
	}
	
}
int main()
{
	printf("wj: %d \n", cqy::wj::a);
	printf("gt: %d ", cqy::gt::a);
	return 0;
}

运行结果​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

        这种方式在我们生活中经常会使用到,比如在公司里面,一个项目经常分为几个团队一起来完成,为了防止在整合代码时团队间成员的代码有重名的变量或者函数,使用命名空间可以有效的防止这些。

在进行空间访问时有下面几种方法

1)指定使用命名空间访问,就是直接使用空间名进行访问,在公司中推荐使用这种访问方式。

2)使用using将命名空间中某个成员展开。

3)直接展开命名空间全部成员,这种方式在我们日常刷题时可以考虑使用,这样可以减少我们的代码量,更方便些。

四 缺省参数

        分为全缺省和半缺省,以下面代码为例来理解什么是全缺省,什么是半缺省。

1)全缺省

//全缺省
int add(int a = 10, int b = 5)
{
	return a + b;
}

int main()
{
	printf("%d \n", add());
    printf("%d \n", add(5));
	printf("%d \n", add(10, 10));
	return 0;
}

运行结果

上面代码展示的是全缺省

可以看到当我们不传参数,函数会直接使用函数的默认值去计算。

当传一个参数时,函数调用时第一个参数是使用的是实参,而不是默认值。

当传两个参数时,那么函数调用全都使用实参的值。

2)半缺省

//半缺省
int add(int a, int b = 5)
{
	return a + b;
}

int main()
{
	printf("%d \n", add());//错误,在半缺省中,必须要传实参,因为还有些参数没有默认值
    printf("%d \n", add(5));
	printf("%d \n", add(10, 10));//
	return 0;
}

运行结果

上面代码展示的是半缺省

可以看到在半缺省时,我们必须给第一个参数传实参。

当传入一个参数时,此时函数中a的值为5,b的是默认值5。

当传入两个参数时,那么两个参数都是使用实参的值。

还需要知道的是:

1)带缺省参数的函数调⽤,C++规定必须从左到右依次给实参,不能跳跃给实参。

2)函数声明和定义分离时,缺省参数不能在函数声明和定义中同时出现,规定必须函数声明给缺省值。

        学完缺省参数之后,我想到了我们生活中的舔狗,当女神需要你的时候你就有作用了,当不需要你的时候随便找个人就能把你代替了,希望大家都不要去当“缺省参数”。

        今天的内容到此为止,麻烦大家帮忙点点赞,感谢支持!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小新学编程Pro版

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值