当前位置: 首页 > news >正文

凡网站建设深圳推广

凡网站建设,深圳推广,太原网站建设 世纪优创,长沙优化公司文章目录命名空间C输入与输出缺省参数函数重载命名空间 在C/C中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标 识符的名称进行本地化&#xff0…

文章目录

  • 命名空间
  • C++输入与输出
  • 缺省参数
  • 函数重载

命名空间

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

#include<stdio.h>
#include<stdlib.h>int rand = 0;
int main()
{printf("%d\n",rand);return 0;
}

这也证明了C语言并不能避免重定义这类问题,所以接下来我们要解决的事情就是重命名问题。
这里是引用

解决重命名问题有三种方法

  • 1.指定命名空间访问
  • 2.常用部分展开
  • 3.全局展来(并不常用)

指定命名空间访问
这类方法会在以后的实际开发的项目工程种经常使用,但是并不方便日常练习。

#include<stdio.h>
#include<stdlib.h>
#include"zzm1.h"int a = 0;
int main()
{int a = 5;printf("%d\n",a);//5printf("%d\n",::a);//0printf("%d\n",Azzm::a);//10return 0;
}
//头文件zzm1.h
namespace Azzm
{int a = 10;
}
  • 定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。命名空间是可以嵌套的,当两个命名空间的名称是一样的编译器会认为将两个命名空间合并成为一个。

  • 命名空间中可以定义变量/函数/类型

  • 从上面的代码中可以看出,查找a的信息是从函数内开始找的,没有找到再去全局中查找。::(作用域限定符)就是指定空间查找的,当::的前面没有东西,或者为空格时,意思就是指定的空间为全局,在::的前面加上Azzm就是去该名字的命名空间去查找。

-------------------------------------------------------------------------------------------------------------

常用部分展开
该方法在以后的实际开发项目当中也会经常的使用,但是并不适合平时的练习。

#include<iostream>
//using namespace std;
using std::cout;
using std::endl;int main()
{int a = 0;cout<<a<<endl;cout << "hello world" << endl;cout << 'c' << endl;return 0;
}

部分展开可见上面的代码已经方便多了,

-----------------------------------------------------------------------------------------------------------

全局展开
该方法经常使用于平时的练习,非常的便利,但是并不适合实际开发当中的项目。

#include<iostream>
using namespace std;
//using std::cout;
//using std::endl;int main()
{int a = 0;cout<<a<<endl;cout << "hello world" << endl;cout << 'c' << endl;return 0;
}

全局的展开,同样也带来了命名与函数名的冲突问题,有利也有弊。
一般情况下是不建议全局展开的。

C++输入与输出

  1. 使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含< iostream >头文件以及按命名空间使用方法使用std。
  2. cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含< iostream >头文件中。
  3. <<是流插入运算符,>>是流提取运算符。
  4. 使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。C++的输入输出可以自动识别变量类型。
  5. 实际上cout和cin分别是ostream和istream类型的对象,>>和<<也涉及运算符重载等知识,这些知识我们我们后续才会学习,所以我们这里只是简单学习他们的使用。后面我们还有有一个章节更深入的学习IO流用法及原理。
    注意:早期标准库将所有功能在全局域中实现,声明在.h后缀的头文件中,使用时只需包含对应头文件即可,后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间,规定C++头文件不带.h;旧编译器(vc 6.0)中还支持<iostream.h>格式,后续编译器已不支持,因此推荐使用+std的方式。
#include<iostream>
using namespace std;
int main()
{int n=0;cin >> n;double arr[5];for (int i = 0; i < n; i++){cin >> arr[i];}for (int i = 0; i < n; i++){cout << arr[i] << endl;//endl='\n'}return 0;
}

使用coutcin的好处是它可以自动识别类型,方便了很多。当需要控制浮点数精度的时候,可以继续使用printf和scanf,相对于这两个控制精度更加的简便(c++是兼容c的)。所以在我们使用时,那种更方便就是用那种,都是取决于自己。

缺省参数

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

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

缺省参数分类

  • 全缺省参数
void Func(int a = 10, int b = 20, int c = 30)
{cout << "a = " << a << endl;cout << "b = " << b << endl;cout << "c = " << c << endl;
}
  • 半缺省参数
void Func(int a, int b = 10, int c = 20)
{cout << "a = " << a << endl;cout << "b = " << b << endl;cout << "c = " << c << endl;
}

注意:

  1. 半缺省参数必须从右往左依次来给出,不能间隔着给
  2. 缺省参数不能在函数声明和定义中同时出现(在声明当中出现)
//test.cpp
#include"test.h"
int main()
{Func(1);return 0;
}
//test.h
#include<iostream>
using std::cout;
using std::endl;void Func(int a = 10, int b = 20, int c = 30);//注意
//zzm.cpp
#include"test.h"void Func(int a , int b, int c )//注意
{cout << "a = " << a << endl;//1cout << "b = " << b << endl;//20cout << "c = " << c << endl;//30
}
  1. 缺省值必须是常量或者全局变量
  2. C语言不支持(编译器不支持)

函数重载

函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这
些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型不同的问题。
形成函数重载有三种不同的条件,符合其一就可以实现函数重载。

  • 参数类型不同
  • 参数个数不同
  • 参数顺序不同

1.参数类型不同

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

2.参数个数不同

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

3.参数顺序不同

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

在这里简单介绍一下c和c++分别的识别函数的方法,c是直接就通过函数名来识别,所以c也就不能出现相同的函数名在统一作用域。而c++是通过函数名和参数来识别函数的,所以也就可以实现相同的函数名,返回类型并不能作为识别函数的方法。

最后:文章有什么不对的地方或者有什么更好的写法欢迎大家在评论区指出
http://www.wooajung.com/news/23712.html

相关文章:

  • 南城区做网站seo优化咨询
  • 域名续费后网站打不开百度邮箱登录入口
  • 只做衬衣网站百度seo排名优化技巧分享
  • 织梦做的网站图片路径在哪淘客推广怎么做
  • 政府网站建设方案范文—工作方案seo专员岗位职责
  • 北京建设工程教育中心网站平台推广方案
  • 高端做网站哪家好临沂seo
  • 深圳创业补贴政策2022申请条件网站排名优化制作
  • 网页设计实训报告总结100字北京seo优化推广
  • 利用切片做网站背景图片域名访问网站怎么进入
  • 闸北专业做网站网络推广外包公司干什么的
  • 郑州网站建设最低价网络营销运营方案
  • 预约做家庭清洁的网站西安网站建设制作公司
  • 怎么制作网站教程图片石家庄seo按天扣费
  • 织梦网站优化教程开个网站平台要多少钱
  • wordpress主题官网seo关键词大搜
  • 搜索引擎优化教程seo词条
  • 东莞机械建站如何培训机构网站
  • 做调查赚钱的网站有哪些南宁优化网站收费
  • 中国企业500强搜索版宜昌网站seo收费
  • 哪里做网站排名职业培训机构
  • 网站 多线域名注册好了怎么弄网站
  • 寻找郑州网站建设网站制作维护
  • 网站建设内存网络推广营销策划方案
  • 网站产品动效怎么做最新最好的磁力搜索
  • 做新闻网站怎么赚钱北京网站排名seo
  • 做像淘宝这样的购物网站要多少钱佛山本地网站建设
  • 网站建设规划快速将网站seo
  • 给别人做网站怎么收取费用域名被墙查询
  • 游戏服务器租用多少钱一年郑州seo公司排名