C++基础学习

1. C++关键字

C++关键字相对C语言来说要多一些,但是也是一种更完善更多优化的语言。
C++合计有63个关键词,C语言合计有32个关键字。
这里我们简单介绍一下C++的关键字
在这里插入图片描述
合计有这些,我们后期使用的时候在详细介绍。

2. 命名空间

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

#include <stdio.h>
#include <stdlib.h>
int rand = 10;
// C语言没办法解决类似这样的命名冲突问题,所以C++提出了namespace来解决
int main()
{
 printf("%d\n", rand);
 return 0;
}
// 编译后后报错:error C2365: “rand”: 重定义;以前的定义是“函数”

在C语言中,如果函数已经存在,再使用函数名称作为变量名这个时候我们的程序会报错,
但是C++这里的命名空间就利用了一个域的概念巧妙地化解了这个问题。如上图这里我们出现了报错后,我们这里使用一个namespace关键字来创建一个命名空间。

//这里xxy是我们命名空间的名字,大家可以使用自己喜欢的名字来命名
namespace xxy
{
 // 命名空间中可以定义变量/函数/类型
 	int rand = 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;
     }
 }
}

这里强调一下,在同一个工程中,多个命名空间的名字可以一样,在最后运行时,编译器会将他们合成同一个同名的空间,方便被调用。

命名空间的两种使用

一、关于命名空间的使用,我们需要介绍一个符号“::”这是两个冒号什么呢?这里我们叫他们作用域限定符,那么这两个“冒号”是什么意思呢?这里我们给大家解释一下:

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

这个代码的意思及是将N1这个作用域中的a取出来打印在屏幕上,这样我们就不会跟全局变量的a又或者是别的作用域中的a搞混了。
二、接下来我们介绍的是使用using将命名空间中的某个成员引入

using N::b;
int main()
{
    printf("%d\n", N::a);//第一个输出我们这里使用的是作用域限定符
    printf("%d\n", b);//第二个我们就是使用using先把N1这个作用域中的b展开,就可以直接使用
    return 0;    
}

3. C++输入&输出

我们知道C语言中的输入和输出是scanf和printf,虽然在C++中我们也可以使用scanf和printf,但是呢我们C++也有一套属于自己的输入输出的东西哦。

#include<iostream>
// std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中
using namespace std;
int main()
{
cout<<"Hello world!!!"<<endl;
return 0;
}

首先我们需要先在顶部include包含一个头文件叫做iostream(Input Output Strean)。
std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中。
在简单的说4点:

  1. 使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含< iostream >头文件
    以及按命名空间使用方法使用std。
  2. cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含<
    iostream >头文件中。
  3. <<是流插入运算符,>>是流提取运算符。
  4. 使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。
    C++的输入输出可以自动识别变量类型。
  5. 实际上cout和cin分别是ostream和istream类型的对象,>>和<<也涉及运算符重载等知识,
    这些知识我们我们后续才会学习,所以我们这里只是简单学习他们的使用。
#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;
}

这里需要强调的是流提取运算符是可以自动识别变量类型的。

4.缺省参数

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

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

然后就是缺省参数的分类,缺省参数分为两类,全缺省参数,和半缺省参数。
全缺省参数:顾名思义就是函数定义的所有参数都有初始化,即使没有传参数也可以直接使用。
半缺省参数:规定缺省参数必须从右到左依次给出,不能隔着给。
注意: 1. 缺省参数不能在函数声明和定义中同时出现存在。
2.缺省值必须是常量或者全局变量。
还有就是C语言并不支持缺省参数的概念哦~
今天就到这里啦!谢谢观看!!

  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值