C++入门(一)

   引言:C++是贝尔实验室在1979年开发出来的,它是在C语言的基础上开发出来的一门新的计算机语言,所以它有着C语言的一些特点,同时也有很多创新的地方,简单来说,C语言是面向过程的,而C++是面向对象的。接下来我们一起来学习一下C++的一些语法。

一、命名空间

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

1.1定义

  需要使用到namespace关键字,后面跟命名空间的名字,然后在跟一个{},在大括号里的即为命名空间的成员。

1.1.1正常的命名空间定义

namespace zh
{
	//定义变量
	int a = 66;

	//定义函数
	int Add(int left, int right)
	{
		return left + right;
	}

	//定义类型
	struct Node
	{
		struct Node* next;
		int val;
	};
}

使用:如果我们要访问变量a,需要加上命名空间及作用域限定符:: 

int main()
{
	printf("%d\n", zh::a);
}

1.1.2命名空间嵌套

namespace AAU
{
	int a = 10;
	int Add(int left, int right)
	{
		return left + right;
	}

	namespace zh
	{
		int b = 20;
		int Sub(int left, int right)
		{
			return left - right;
		}
	}
}

1.2命名空间的使用

1.指定命名空间访问

2.using将命名空间中某个成员展开或者全部展开

namespace zh
{
	int a = 10;
	int b = 20;
}

//指定命名空间访问
int main()
{
	printf("%d\n", zh::a);
	return 0;
}

//using将命名空间中某个成员展开
using zh::b;
int main()
{
	printf("%d\n", b);
	return 0;
}

//全部成员展开
using namespace zh;
int main()
{
     printf("%d"\n,a);
     printf("%d"\n,b);
}

 二、C++输入&输出

1.cout和cin是全局的流对象,enl是特殊的换行符,表换行,它们都包含在<iostream>头文件中

2.cout/cin/endl都属于C++标准库,它们都放在一个叫std的命名空间中,使用它们的时候要通过命名空间的方式

3.<<是流插入运算符,>>是流提取运算符

C++的输入输出可以自动识别类型变量

#include <iostream>

using namespace std;

int main()
{
	int a ;
	double b ;
	char c;


	cin >> a;    //相当于scanf("%d\n",a)
	cin >> b >> c;

	cout << a << endl;   //相当于printf
	cout << b << " " << c << endl;

	return 0;
}

 c5d2f17de071426596b46ee26b01f902.png

三、缺省参数

3.1定义

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

#include <iostream>
using namespace std;

void Func(int b = 1)
{
	cout << b << endl;
}

int main()
{

	Func();//没传参时,使用默认的参数值
	Func(20);
	return 0;
}

4f0d1149cdd94d8a908b4f8bdfa1ad11.png

3.2分类

  缺省参数分为全缺省和半缺省参数。

3.2.1全缺省参数 

全部形参给缺省值

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

3.2.2半缺省参数

部分形参给缺省值,要注意的是:必须从右往左依次连续缺省,不能间隔跳跃缺省

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

四、函数重载

 C++支持在同一作用域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者类型不同。这样C++函数调用就表现出了多态行为,使用更灵活。

4.1参数类型不同

#include <iostream>
using namespace std;

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;
}

int main()
{
	Add(10, 20);
	Add(6.6, 7.7);

	return 0;
}

4057e99b04e144ea8645384e1bf6360f.png 

4.2参数个数不同

#include <iostream>
	using namespace std;

	void f()
	{
		cout << "f()" << endl;
	}

	void f(int c)
	{
		cout << "f(int c)" << endl;
	}

	int main()
	{
		f();
		f(6);

		return 0;
	}

 8232826fdfbe48f1b64f9b9098b2a336.png

4.3参数类型顺序不同

#include <iostream>
	using namespace std;

	void f(int a,char b)
	{
		cout << "f(int a,char b)" << endl;
	}

	void f(char b,int a)
	{
		cout << "f(char b,int a)" << endl;
	}

	int main()
	{
		f(6,'w');
		f('w',6);

		return 0;
	}

b0b53f7bd88e41e1bc6d5eea86eea54f.png 

 

 

 

 

 

 

 

 

 

 

相关推荐

  1. C++入门——基础语法()

    2024-07-22 21:58:03       30 阅读
  2. C# WPF入门学习(

    2024-07-22 21:58:03       21 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 21:58:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 21:58:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 21:58:03       45 阅读
  4. Python语言-面向对象

    2024-07-22 21:58:03       55 阅读

热门阅读

  1. AWS认证SAA-C03每日一题

    2024-07-22 21:58:03       13 阅读
  2. python 中的 pprint 和 print有什么区别?

    2024-07-22 21:58:03       15 阅读
  3. 优化ifelse语句

    2024-07-22 21:58:03       16 阅读
  4. redis常用指令

    2024-07-22 21:58:03       15 阅读
  5. 多站点环境下Memcached的配置与管理

    2024-07-22 21:58:03       18 阅读
  6. Vue3 深入组件

    2024-07-22 21:58:03       16 阅读