C++入门--命名空间,输入输出,函数重载

本文介绍了C++中的命名空间概念,用于解决全局作用域中的标识符冲突问题。详细阐述了命名空间的定义、使用方法,包括直接使用、using关键字引入和命名空间引用。接着讲解了C++的输入输出操作,如cout和cin的使用,并指出C++没有格式化输入输出。然后讨论了C++的默认参数功能,包括全缺省和半缺省参数,并强调了声明和定义的规则。最后,解释了函数重载的原理,展示了正确和错误的重载示例,强调重载依赖于形参列表的不同。

命名空间

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

例如下面这个程序:

#include<stdio.h>
#include<stdlib.h>

int rand = 0;   //rand()是随机数生成的函数
int main()
{	
	printf("%d\n", rand);
	return 0;
}

在这里插入图片描述

命名空间的定义

//普通的命名空间
namespace chen1
{
	int a = 0;
	int b = 1;
	int Add(int x, int y)
	{
		return x + y;
	}
}

//命名空间可以嵌套
namespace chen2
{
	int a = 5;
	int b = 10;
	int Sub(int x, int y)
	{
		return x - y;
	}
	namespace chen3
	{
		int a = 100;
		int b = 200;
	}
}

//命名空间是可以同名的,编译器最后可以合成到同一个命名空间中
namespace chen1
{
	char ch = 'c';
}

如何使用命名空间呢?

方法1:加命名空间名称(例如上面的chen1,chen2)和作用域限定符(::)

int main()
{
	//printf("%d\n", a); // 这里会报错
	printf("%d\n", chen1::a); //正确使用方式
	return 0;
}

方法2:使用using关键字将命名空间中的成员引入

using chen1::b;   //可以理解为用using将命名空间chen1中的b放出来
int main()
{
	printf("%d\n", chen1::a);
	printf("%d\n", b);
}

方法3:直接将命名空间引用

using namespace chen1;    //就是将命名空间chen1放出来
 
int main()
{
	printf("%d\n", a);
	printf("%d\n", b);
	printf("%d\n", Add(1, 2));
	return 0;
}

C++的输入和输出

cout 是标准输出(控制台)
cin 是标准输入 (键盘)
使用必须包含头文件 <>和放出标准命名空间std

#include<iostream>
using namespace std;

int main()
{
    
	cout << "hello world" << endl;   //endl 就是换行符'\n'
	cout << "hello world" << '\n';
}

C++是没有格式输入输出的控制的 例如 %d,%f等等

int main()
{
	int a = 0;
	double d = 0;
	
	cin >> a >> d;

	cout << a<<' ';
	cout << d<<endl;
	return 0;
}

C++的缺省(默认)参数

可以把这个想象成备胎-----哈哈哈哈

在这里插入图片描述
如果传参了,就使用传参的值。

全缺省参数:
这个test1就是,意思就是全部缺省(默认)

void test1(int a = 10, int b = 20, int c = 30)
{}
int main()
{
	test1();
	return 0;
}

半缺省参数:这个就是部分缺省,但是要注意一下,只能从右向左缺省,不能间隔

void test2(int a, int b = 2, int c = 3)
{
	cout << a << b << c << endl;
}
int main()
{
	test2(1);  //因为a不是缺省,所以至少传一个值
	return 0;
}

函数的声明和定义不能同时缺省,即使缺省的参数值相同
下面仍旧会报错

//.h头文件中
void test4(int a  = 10);

//.cpp源文件 
void test4(int a =10 )
{
	cout << a << endl;
}

声明缺省,定义不缺省是正确的,为什么呢?当头文件展开的时候,告诉了编译器这个函数可以缺省

//.h头文件中
void test4(int a  = 10);

//.cpp源文件 
void test4(int a )
{
	cout << a << endl;
}

这个定义的缺省没有意义,因为调用的时候必须传值(全缺省)

//.h头文件中
void test4(int a  );

//.cpp源文件 
void test4(int a = 10)
{
	cout << a << endl;
}

函数重载

什么是函数的重载?
C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的
形参列表(参数个数 或 类型 或 顺序)必须不同

正确的重载

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

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

int Add(int x, double d)
{
	return 1;
}

int Add(double x, int d)
{
	return 1;
}

错误的重载

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

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


short Add(short left, short right)
{
	return left + right;
}

int Add(short left, short right)
{
	return left + right;
}

如何快速理解重载?
很简单,只要输入的时候,因为类型,顺序,个数这些原因,当实参传递的时候
会调用一 一对应的函数就是重载

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

通过全部用例

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

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

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

打赏作者

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

抵扣说明:

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

余额充值