【C++】入门基础知识详解(一)

目录

一、C++关键字

二、命名空间

  1、命名空间的定义

  2、命名空间的使用

三、C++输入&&输出

四、缺省参数

  1、缺省参数的概念

  2、缺省参数的分类

    2.1 全缺省参数

    2.2 半缺省参数


一、C++关键字

我们在学习C++之前,我相信大家大多数都对C语言多多少少都有所了解,C语言的关键字有32个。而本文中的C++关键字有63个,如下图所示:

二、命名空间

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

  1、命名空间的定义

定义命名空间,需要使用到 namespace 关键字,后面跟命名空间的名字,然后接一对{} 即可,{} 中即为命名空间的成员。

如下所示:

//xx为命名空间的名称
namespace xx
{
    //命名空间中的内容既可以定义变量,也可以定义函数,还可以定义结构体
	int a = 10;
	int Add(int left, int right)
	{
		return left + right;
	}
	struct Node
	{
		struct Node* next;
		int val;
	};
}

//命名空间可以嵌套
namespace N1
{
	int a;
	int b;
	int Add(int left, int right)
	{
  		return left + right;
	}
	namespace N2
	{
 		int c;
  		int d;
  		int Sub(int left, int right)
  		{
    		return left - right;
  		}
	}
}

//在同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。
//那么下面这个命名空间 xx 会和上面的第一个命名空间 xx 结合在一块
namespace xx
{
 	int Mul(int left, int right)
	{
 		return left * right;
	}
} 

注意: 一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。

  2、命名空间的使用

  命名空间的使用有三种方式:

  (1)加命名空间名称及作用域限定符

namespace N
{
	int a = 10;
}
int main()
{
	printf("%d\n",N::a);
	return 0;
}

  (2)使用using将命名空间中某个成员引入

namespace N
{
	int a = 10;
}
using N::a;
int main()
{
	printf("%d\n",a);
	return 0;
}

  (3)使用using namespace 命名空间名称引入

namespace N
{
	int a = 10;
	int b = 20;
	int Add(int left, int right)
	{
		return left + right;
	}
}
using namespce N;
int main()
{
	printf("%d %d\n", a, b);
	Add(10, 20);
	return 0; 
}

注意: 在使用变量的时候要遵循以下两点:(1)当变量不是放在命名空间时,变量默认在局部和全局找。(2)当变量放在命名空间时,变量默认先去命名空间找,然后再去局部和全局找。

三、C++输入&&输出

#include<iostream>
// std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中
using namespace std;

int main()
{
    cout << "Hello world!" << endl;
    return 0;
}

说明:

     (1)使用 cout 标准输出对象(控制台)cin 标准输入对象(键盘)时,必须包含 < iostream > 头文件 以及按命名空间使用方法使用 std 。

     (2) cout 和 cin 是全局的流对象,endl 是特殊的 C++ 符号,表示换行输出,他们都包含在包含 < iostream > 头文件中。

     (3)  << 流插入运算符,       >>流提取运算符

     (4)使用 C++ 输入输出更方便,不需要像 printf/scanf 输入输出时那样,需要手动控制格式。 C++ 的输入输出可以自动识别变量类型。

     (5)实际上 cout 和 cin 分别是 ostream 和 istream 类型的对象,>> 和 << 也涉及运算符重载等知识, 这些知识我们我们后续才会学习,所以我们这里只是简单学习他们的使用。后面我们还有有 一个章节更深入的学习 IO 流用法及原理。

#include <iostream>
using namespace std;
int main()
{
   int a;
   double b;
   char c;
     
   // 可以自动识别变量的类型
   cin >> a;
   cin >> b >> c;
     
   cout << a << endl;
   cout << b << " " << c << endl;

   return 0;
}

 std 命名空间的使用惯例:

std 是 C++ 标准库的命名空间:

  1. 在日常练习中,建议直接 using namespace std 即可,这样就很方便。
  2. using namespace std 展开,标准库就全部暴露出来了,如果我们定义跟库重名的类型/对象/函数,就存在冲突问题。该问题在日常练习中很少出现,但是项目开发中代码较多、规模大,就很容易出现。所以建议在项目开发中使用,像 std::cout 这样使用时指定命名空间 + using std::cout展开常用的库对象/类型等方式。

四、缺省参数

  1、缺省参数的概念

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

如下所示:

void Func(int a = 1)
{
	cout << a << endl;
}
int main()
{
	Func();     // 没有传参时,使用参数的默认值
	Func(10);   // 传参时,使用指定的实参
	return 0;
}

  2、缺省参数的分类

    2.1 全缺省参数

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

    2.2 半缺省参数

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

 注意:

  1. 半缺省参数必须从右往左依次来给出,不能间隔着给;
  2. 缺省参数不能在函数声明和定义中同时出现;(我们在声明的时候给缺省参数)
  3. 缺省值必须是常量或者全局变量
  4. C语言不支持(编译器不支持)


本文要是有不足的地方,欢迎大家在下面评论,我会在第一时间更正。

 老铁们,记着点赞加关注!!!   

猜你喜欢

转载自blog.csdn.net/m0_63198468/article/details/131218078
今日推荐