【C++初阶】基本语法 0

一,命名空间(namespace)

1.名字空间可以解决函数,全局变量名字重复的问题,包在不同名字空间里的重复函数实际就是两个完全无关的函数。
2.名字空间可以嵌套,嵌套内部和外部没有任何关系。
3.名字空间允许重名,重名的 名字空间会被合并。

名字空间是用来定义作用域的。
它解决的C语言只能用文件划分作用域的缺陷。

使用using关键字可以引用一个名字空间,使得这个名字空间的所有内容对自己可见。

如果两个名字空间分别有两个相同的函数,那么我们即使同时用using引用了两个名字空间,那么也不会报错,除非我使用了这个函数(因为使用这个函数会产生歧义,不知道调用哪一个)

二.函数重载
C++允许两个同名函数同时存在,它们函数名相同,参数列表不同。

缺省参数:
函数的参数列表中,允许存在被赋值的参数,这些参数具备以下特点:
1.如果传入了,会去传入的值,如果没有传入,会取函数定义时被赋予的值(默认值)。
2.这些参数必须位于参数列表的尾部,不能穿插。
3.被赋值的参数列表不能在声明和定义时同时出现,只能出现一次。

//名字空间

#include <iostream>
using namespace std;
#include "t1.h"
using namespace t1;


namespace test {
	namespace n1 {
		int add(int a, int b)  {
			std::cout << "1\n";
			return a + b;
		}
	}

	namespace n2 {
		int add(int a, int b) {
			cout << "2\n";
			return a + b;
		}
	}
}

namespace n2 {
	int add(int a, int b){
		cout << "3\n";
		return a + b;
	}
}

namespace n2{
	int sub(int a, int b){
		cout << "4\n";
		return a - b;
	}
}

int add(int a, int b){
	return a + b;
}
/*
int main(){
	cout << t1::add(2, 3);
	return 0;
}
*/

//函数重载

#include <iostream>
using namespace std;

void func(int a, int b, int c);

void func(int a, int b = 20, int c = 30) {
	cout << a << endl;
	cout << b << endl;
	cout << c << endl;
}

void swapArgs(int * pa, int * pb) {
	int tmp;

	tmp = *pa;
	*pa = *pb;
	*pb = tmp;
}

void swapArgs(float * pa, float * pb) {
	float tmp;

	tmp = *pa;
	*pa = *pb;
	*pb = tmp;
}

int add(short a, short b) {
	return a + b;
}

short add(short a, short b) {
	return a + b;
}

int main() {
	//func();
	func(2);
	func(3, 4);
	func(5, 6, 7);

	int a = 4, b = 7;
	float c = 3.14, d = 1.618;

	swapArgs(&a, &b);
	swapArgs(&c, &d);

	cout << a << " " << b << endl;
	cout << c << " " << d << endl;
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值