【C++】入门基础知识-1
🍬个人主页:Yanni.—
🌈数据结构:Data Structure.
🎂C语言笔记:C Language Notes
🏀OJ题分享: Topic Sharing
目录
前言:
C++关键字
命名空间
命名空间介绍
命名空间的使用
C++的输入和输出
cout 输出
cin 输入
std命名空间的使用惯例
缺省参数
缺省参数概念
缺省参数分类
函数重载
函数重载概念
为什么c语言不支持重载
前言:
企业中面试中一般需要面向对象的两种主流语言C++和Java,现在java岗位虽然多,但是内卷严重,经过很长时间的思考,还是选择了C++,可能以后还会进入游戏开发的领域,这恰恰是我感兴趣的,C++前期的基础知识很难,但是过了这道难关之后情况会越来越来。Let's go!
C++关键字
这里在C语言的基础上增加了许多关键字。
命名空间
命名空间介绍
#include<stdio.h>
#include<stdlib.h>
int rand = 10;
int main()
{
printf("%d", rand);
return 0;
}
我们直到rand产生随机值,但是我们给出了一个全局变量rand,并且赋值了给它。这就导致:
“rand”: 重定义;以前的定义是“函数”。所以我们得避免命名冲突或名字污染。
命名冲突主要有两个:
1.库冲突
2.项目间,同时工作交接之间的互相命名冲突
因此定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{} 中即为命名空间的成员。
#include<stdio.h>
#include<stdlib.h>
namespace Yanni
{
int rand = 10;
}
int main()
{
printf("%d", Yanni::rand);
return 0;
}
命名空间的三个特性:
1.命名空间中可以定义变量/函数/类型。
2.命名空间可以嵌套。
3.同一个工程中是允许多种同名称的命名空间存在,编译器最后会成同一个命名空间内。
命名空间的使用
命名空间的使用主要有三种方式
1.加命名空间名称及作用域限定符
namespace Yanni // 命名空间名
{
int r = 10;
}
int main()
{
printf("%d", Yanni::r);
return 0;
}
2.使用using将命名空间中某个成员引入
namespace Yanni
{
int r = 10;
}
using Yanni::r;
int main()
{
printf("%d",r);
return 0;
}
这个操作就想是将命名空间里的特定成员变成全局访问。
3.使用 using namespace 命名空间名称引入
namespace Yanni
{
int r = 10;
}
using namespace Yanni;
int main()
{
printf("%d",r);
return 0;
}
这就是将命名空间内的所有成员变成全局访问。
C++的输入和输出
cout 输出
#include<iostream>
//std是C++标准库的命名空间名,C++将标准库的定义都放到这个命名空间中。
using namespace std;
int main()
{
cout << "hello world" << endl;//endl相当与换行符
return 0;
}
cin 输入
在c语言中,我们定义变量都需要对变量进行初始化,而在C++中,就不需要初始化了,因为cin>>可以自动识别变量类型。
#include<iostream>
//std是C++标准库的命名空间名,C++将标准库的定义都放到这个命名空间中。
using namespace std;
int main()
{
int a;
double b;
char c;
cin >> a;
cin >> b >> c;
cout << a << b << c << endl;
return 0;
}
std命名空间的使用惯例
缺省参数
缺省参数概念
using namespace std;
void Func(int a = 0)
{
cout << a << endl;
}
int main()
{
Func();没有传参时,使用参数的默认值
Func(10);传参时,使用限定的实参
}
缺省参数分类
全缺省参数
void Func(int a = 0,int b = 10,int c = 20)
{
cout << a << endl;
cout << b << endl;
cout << c << endl;
}
半缺省参数
void Func(int a, int b = 10, int c = 20)
{
cout << a << endl;
cout << b << endl;
cout << c << endl;
}
这里要注意的是:
1.半缺省参数必须从右往左依次来给出,不能间隔着给(传参的顺序的从左到右)
2.缺省参数不能再函数声明和定义中同时出现
3.缺省值必须是常量或者全局变量
4.c语言编译器不支持
函数重载
函数重载概念
int Add(int left, int right)
{
cout << "int Add(int left, int right)" << endl;
return left + right;
}
double Add(double left, double right)
{
cout << "double Add(double left, double right)" << endl;
return left + right;
}
2.参数个数不同
void Func()
{
cout << "void Func()" << endl;
}
void Func(int a)
{
cout << "void Func(int a)" << endl;
}
3.参数类型顺序不同
void F(int a, char b)
{
cout << "void F(int a, char b)" << endl;
}
void F(char b, int a)
{
cout << "void F(char b, int a)" << endl;
}
为什么c语言不支持重载
结论:在Linux下,采用g++编译完成后,函数名字的修饰发生改变,编译器将函数参数类型信息添加到修改的名字中。
好啦,这就是今天学习的分享啦!看到希望大家的三连呀!
如果有不当之处,欢迎大佬指正!