C++入门(头文件,命名空间,作用域,输入输出流,引用,缺省参数,函数重载)

简介: C++入门(头文件,命名空间,作用域,输入输出流,引用,缺省参数,函数重载)



一,头文件

C++的头文件与C是有差距的,C的头文件是#include<stdio.h>,而C++是#include<iostream>,两个文件地位作用差不多,原来C中的头文件像:#include<math.h>,#include<stdlib.h>,在C++中是#include<cmath>,#include<cstdlib>,当然也有C++中有#include<string>文件,可以使用C++的字符串,以后我们会明白,这个很方便。

二,命名空间

可能很多初学者,都会莫名奇妙的敲这样的一段代码

using namespace std;

这段代码是什么意思呢?现在我来给大家解释。首先我们要明白命名空间是什么,我们可以理解命名空间是一个与其他的空间隔离开来的一块空间,里面可以有C++的库函数,也可能有我们自己创建的变量,函数,这样做的原因是为了避免当我们不使用库函数时命名与库函数的冲突,或者大型项目之中与其他程序员的代码命名冲突,相当于独立包装起来了,我们使用时需要解开包装,上面这段代码就是解开包装,但是这个太粗暴了,一下子就拿出了这个包装里面所有的东西,那我们如何单独拿出我们想要的呢?看下面代码

//我们先自己创建一个命名空间
namespace xhk{
int a=10;
int b=20;
int add(int x,int y){
return x+y;
}
}
//解开包装里所有的东西
using namespace xhk;
//只解开我们需要的东西变量a
using xhk::a;

当然我们也有其他的办法去拿到这些数据,但是稍微麻烦一些,在下一个内容作用域

三,作用域

C++相对于C有一个很大的优势就是包装特别是大型的程序开发中,在C++中有很多东西是包装起来的,像命名空间的包装作用,我们想要使用它们我们需要做一些表明使用来源的声明,而作用域声明符就是用来标明出处的特殊符号————“::”,那作用域声明符怎么用呢?在  :: 后面是我们要使用的东西,而  :: 前面是它的来源。举个例子

std::strlen(s);

四,输入输出流

C++的输入输出于C是不同的,但是C++中是可以使用C的输入输出,但是要包括C的头文件,我们这里讲C++的输入输出。

输出:  cout

使用例子

cout<<"ABC"<<endl<<"DEF";      //endl代表换行,"\n"也可以达到相同作用
//效果
输出: ABC
      DEF

输入:  cin

使用例子

int a;
//输入
cin>>a;
//输出
cout<<a<<endl;

五:引用

在C中,我们有时不得不使用指针,像函数传参但要改变原参数的值,这是因为传参传的是临时拷贝,并不是原参数。在C++中加入了引用,引用类似于指针,但是使用简单,效果类似于起别名,但是使用要注意,类型要匹配,而且使用时要初始化,并且不可以改变指向,可以多层嵌套。

int a=10;
//使用引用
int& b=a; //b是a的别名
b=0;
cout<<a<<endl;
//输出
0

六,缺省参数

在C++函数中是支持缺省参数的,那么缺省参数是什么呢?假设有一个Add函数,函数有两个参数,有时候我们可以不传参数过去,它就会使用你提前定好的默认参数,我们先看具体的例子

int Add(int x =0 ,int y =0){
return x+y;
}
Add(2,3);  //结果是5
Add(2);    //结果是2
Add();      //结果是0

但是缺省参数的使用是有限制的,缺省参数从左边第一个缺省参数开始,右边的都必须是缺省参数,不能在一群参数中间夹一个缺省参数

七,函数重载

我们都知道在C语言中函数的名称是不可以相同的,但是我们有时需要一个函数面对不同的情况做出不同的反应操作怎么办呢?在C++中给出了函数重载来解决,不过函数重载是有要求的,必须参数不同,可以是缺省参数,也可以参数类型,个数,类型顺序不同。(但重载的坑很多,有些情况可能会出现二义性导致程序崩溃)接下来看正确的函数重载例子

int Add(int x,int y){
return x+y;
}
double Add(double x,int y){
return x+y;
}
double Add(double x,double y){
return x+y;
}
int Add(int x=0,int y=0){
return 0;
}
相关文章
|
3天前
|
设计模式 存储 Java
C++从入门到精通:3.5设计模式——提升代码可维护性与可扩展性的关键
C++从入门到精通:3.5设计模式——提升代码可维护性与可扩展性的关键
|
3天前
|
存储 C++
C++从入门到精通:1.1.4基础语法之控制流
C++从入门到精通:1.1.4基础语法之控制流
|
3天前
|
存储 编译器 C++
C++从入门到精通:1.1.2基础语法之数据类型
C++从入门到精通:1.1.2基础语法之数据类型
|
4天前
|
存储 编译器 C语言
c++的学习之路:5、类和对象(1)
c++的学习之路:5、类和对象(1)
19 0
|
4天前
|
C++
c++的学习之路:7、类和对象(3)
c++的学习之路:7、类和对象(3)
19 0
|
3天前
|
设计模式 Java C++
【C++高阶(八)】单例模式&特殊类的设计
【C++高阶(八)】单例模式&特殊类的设计
|
3天前
|
编译器 C++
【C++基础(八)】类和对象(下)--初始化列表,友元,匿名对象
【C++基础(八)】类和对象(下)--初始化列表,友元,匿名对象
|
7天前
|
存储 安全 C语言
【C++】string类
【C++】string类
|
存储 编译器 Linux
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
|
9天前
|
编译器 C++
标准库中的string类(上)——“C++”
标准库中的string类(上)——“C++”