0
点赞
收藏
分享

微信扫一扫

C++入门篇 <一>

棒锤_45f2 2022-05-18 阅读 113

 

目录

什么是C++

命名空间

命名空间的定义

普通的命名空间

命名空间的嵌套

命名空间的合并

输入与输出

前言

代码解析

 缺省参数

 缺省参数的分类

全缺省参数

半缺省参数

注意

函数重载

函数重载的概念

 类型不同

参数个数不同

顺序不同

注意

用Linux来验证函数重载

在C++下对函数名的修饰:

 在C语言下对函数名的修饰:

 总结


什么是C++

总而言之,是Bjarne Stroustrup博士在使用C语言的时候,发现C语言有许多不足,然后大佬在这基础上创造了我们现在需要学习的语言,C++。

命名空间

命名空间的定义

其实我们不难发现,有一点点像我们在C语言阶段学习的结构体。那么命名空间的代码实现又是什么样的呢,如下所示:

普通的命名空间

//1. 普通的命名空间
namespace MWB // MWB为命名空间的名称
{
// 命名空间中的内容,既可以定义变量,也可以定义函数
int a;
int Add(int x, int y)
{
return x + y;
}
}

命名空间的嵌套

namespace MWB1
{
int a;
int b;
int Add(int x, int y)
{
return x + y;
}
namespace MWB2
{
int c;
int d;
int Sub(int x, int y)
{
return x - y;
}
}
}

命名空间的合并

若在同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。

//3. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。
namespace MWB1
{
int Mul(int x, int y)
{
return x * y;
}
}

注意:命名空间就相当于定义了一个新的作用域,出作用域后里面的内容将不可用。

输入与输出

前言

我们首先用C++来跟世界打个招呼,代码如下:

#include<iostream>
using namespace std;

void Add()
{
	cout << "hello world !" << endl;
}

int main()
{
	Add();
	return 0;
}

 由此可见C++的输入方式和C语言有本质的区别。

代码解析

C++的输入完全不同与C语言,C++是利用标准输入“cin”来进行输入操作的,“cout”来进行标准输出操作的,并且使用的时候必须包含<iostream>头文件以及std标准命名空间。那么C++的输入与输出相较于C语言有哪些优势呢,首先,我们在用C语言进行输入输出操作的时候不同的类型需要不同的格式控制符,但是C++就不需要。

 缺省参数

缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。

 缺省参数的分类

全缺省参数

是指每个参数在形参中都有赋值。

void TestFunc(int a = 1, int b = 2, int c = 3)
{
	cout << "a=" << a << endl;
	cout << "b=" << b << endl;
	cout << "c=" << c << endl;
}

半缺省参数

void TestFunc(int a, int b = 2, int c = 3)
{
	cout << "a=" << a << endl;
	cout << "b=" << b << endl;
	cout << "c=" << c << endl;
}

注意

1、 半缺省参数必须从右往左依次来给出,不能间隔着给

比如:

2、缺省参数不能在函数声明和定义中同时出现

3、缺省值必须是常量或者全局变量


4、C语言不支持(编译器不支持)

函数重载

自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重载了。
比如:以前有一个笑话,国有两个体育项目大家根本不用看,也不用担心。一个是乒乓球,一个是男足。前者是“谁也赢不了!”,后者是“谁也赢不了!”

函数重载的概念

函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 顺序)必须不同,常用来处理实现功能类似数据类型不同的问题。

 类型不同

int Add(int x, int y)
{
	return x + y;
}
double Add(double x, double y)
{
	return x + y;
}

参数个数不同

int Add(int x, int y)
{
	return x + y;
}
int Add(int x)
{
	return x;
}

顺序不同

void Add(double y,int x	)
{
	cout << "1" << endl;
}
void Add(int x,double y)
{
	cout << "2" << endl;
}

注意

只改变函数的返回类型是不构成函数重载的。

用Linux来验证函数重载

先用Linux下创建 func.h  func.c   test.c

 在Linux下编译C++用的是g++编译器,编译C语言用的是gcc编译器。

在C++下对函数名的修饰:

 在C语言下对函数名的修饰:

 总结

在C语言中,因为链接的时候他们都是直接使用函数名去标识和查找,而重载函数的函数名相同。

然而C++中,有专门的的函数名修饰规则,只要参数不同,重载函数就不存在二义性和冲突了。

举报

相关推荐

0 条评论