一 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)函数声明和定义分离时,缺省参数不能在函数声明和定义中同时出现,规定必须函数声明给缺省值。
学完缺省参数之后,我想到了我们生活中的舔狗,当女神需要你的时候你就有作用了,当不需要你的时候随便找个人就能把你代替了,希望大家都不要去当“缺省参数”。
今天的内容到此为止,麻烦大家帮忙点点赞,感谢支持!!!!