C++总结篇(1)命名空间及引用

1、命名空间

1.1概念:
用我自己的话说就是规定一个空间,在该空间内定义的变量和函数只限于在该空间内使用,在该空间外无法直接调用。需要调用须加域名,这也就使得避免了同名变量或者函数引起的冲突。
1.2命名空间定义:
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名 空间的成员。
1.3示例:

#include<iostream>
using namespace std;
namespace n1
{int  a = 0,b=4;int  Add(int x, int y){return x + y;}
}
int  main()
{cout << n1::Add(3, 2) << endl;system("pause");return  0;
}

2、输入与输出

2.1输入:
cin>>a,等同于c语言的scanf(“%d”,&a);相比较可以看出C++风格的更加便捷,没有了格式控制符,编译器自动识别输入数据的类型。
2.2输出:
cout<<a<<endl;等同于c语言的printf(“%d\n”,a);与输入一样,也没有了格式控制符。

3、函数重载

3.1概念:
C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的 形参列表(参数个数 或 类型 或 顺序)必须不同,常用来处理实现功能类似数据类型不同的问题。
3.2示例:

int		Add(int x, int y);
double   Add(double x, double y);
int		Add(int x, int y, int z);

4、引用

4.1概念:
引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。
4.2示例:

int a = 10;
int &re = a;
cout << re << endl;
re = 9;
cout << re << endl;
cout << a << endl;
输出结果10,9,9。a和re共用一块内存空间,对a或re进行赋值都能更改其数据。

4.3 引用特性

  1. 引用在定义时必须初始化
  2. 一个变量可以有多个引用
  3. 引用一旦引用一个实体,再不能引用其他实体,如果在此引用了其他实体,相当于给该引用赋值。

4.4引用常量
如果引用一个常量,即被const修饰的变量,在引用时同样用const修饰。例:

const int a = 10;
const int &re = a;

4.5使用场景
引用可作为函数的参数,也可做函数的返回值,这就提高了函数传参时的效率,在功能上和指针相同,不同的是指针可以有多级指针,引用没有多级引用。示例:

//做参数:
#include<iostream>
using namespace std;
int Add(int &x, int &y)
{return x + y;
}
int  main()
{int a = 10,b=5;int k=Add(a, b);cout << k << endl;system("pause");return  0;
}
//做返回值:
#include<iostream>
using namespace std;
int &Add(int x, int y)
{int sum = x + y;return sum;
}
int  main()
{int &k=Add(1,3);Add(4,6);cout << k << endl;system("pause");return  0;
}
这段代码或许你会认为输出的结果是4,然而结果却是10,引用做返回值时,引用的数值会随函数的返回值的改变而改变。

5、空指针

在c语言中一般用来表示一个指针为空或一个数据为0都用NULL来表示,这很容易出现错误,有时候编译器无法知道这是一个指针还是一个变量。在C++中用nullptr来表示一个空指针,它不具有表示0的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/545808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式映射与集中式映射_K映射上的表达式映射和组包围

分布式映射与集中式映射In the previous article (Karnaugh Map 2, 3 and 4- variable) we have already discussed the designing of K-Map and various forms in which they are represented based on either they are being mapped for minterm or maxterm. 在上一篇文章( 卡…

phrases

短语 To get the better/best of you 打败&#xff0c;胜过To get the most/utmost out of 有效地使用或利用Overall trend Compactly- built a man of medium build Heavily-built Level off, remain stable, stay constantPlateau fluctuateThe outlay on cars are …

Datagridview拖放数据到TreeView

通过Datagridview控件可以显示数据库记录sender:表示支持.net framework类层次结构中所有类的基类对象.e:表示为mousedown 事件提供数据.private void treeview1_mouseenter(object sender,eventargs e)拖放可以选定单行或者多行.1.选定一条在控件中默认状态下行标题选定.按ctr…

JDK 竟然是这样实现栈的?

作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;前面的文章《动图演示&#xff1a;手撸堆栈的两种实现方法&#xff01;》我们用数组和链表来实现了自定义的栈结构&#xff…

layui如何自定义layedit富文本编辑器工具栏

layui自带了layedit富文本编辑器&#xff0c;我们在使用过程中有时候不需要全部工具&#xff0c;或者想自定义工具栏&#xff0c;该如何弄呢&#xff1f;以下方法教大家自定义自己的layedit编辑器。 步骤1&#xff1a;定义存放编辑器的盒子 <div class"layui-form-it…

C++总结篇(2)类和对象

1、类 1.1类的定义: C是一门面向对象的语言&#xff0c;便就引入了类的概念&#xff0c;类在一定程度上与C语言中的结构体很相似。Class为定义类的关键字&#xff0c;如下示例&#xff1a; class student {char name[10];int age;int print(); };类不仅可以用class来定义&a…

小程序 || 语句_C ++条件语句| 查找输出程序| 套装1

小程序 || 语句Program 1: 程序1&#xff1a; #include <iostream>using namespace std;int main(){if (NULL) {cout << "Hello World";}else {cout << "Hii World";}return 0;}Output: 输出&#xff1a; Hii WorldExplanation: 说明&…

关于微信,运营商们就这点志向?

2019独角兽企业重金招聘Python工程师标准>>> 近期关于运营商威逼微信收费之事闹得沸沸扬扬&#xff0c;在虎嗅上看到有不少人发表了自己的看法也不乏给运营商或微信出点子的人&#xff0c;但我觉得都不是很妥&#xff0c;还是谈谈我的看法吧。 陈旧的思路&#xff…

阿里巴巴开源的Excel操作神器!

前提导出数据到Excel是非常常见的后端需求之一&#xff0c;今天来推荐一款阿里出品的Excel操作神器&#xff1a;EasyExcel。EasyExcel从其依赖树来看是对apache-poi的封装&#xff0c;笔者从开始接触Excel处理就选用了EasyExcel&#xff0c;避免了广泛流传的apache-poi导致的内…

再谈指针

C语言为什么高效&#xff1f;因为C语言有指针。指针是C语言的精华&#xff0c;同时也是C语言的难点&#xff0c;很多人一学到指针就表示头大&#xff0c;指针的指向往往把人搞得晕头转向&#xff0c;甚至有的人为了避免使用指针居然不惜多写几十行代码&#xff0c;无疑增加了工…

vc给exe更改图标

第一步&#xff1a;将制作好的ioc格式图标&#xff0c;拷贝到自己工程所在的res文件夹中第二步&#xff1a;在vc开发环境中&#xff0c;insert-->resourse--〉单击icon然后选择右边的import找到刚才添加到res中的图标文件第三步&#xff1a;将m_hIcon AfxGetApp()->Load…

人工智能ai知识_人工智能中基于知识的代理层

人工智能ai知识Every agent that has a knowledge base and an inference system is known as a knowledge-based agent. The knowledge base contains all the information the agent has. This information can either be the data that is embedded into the agent in prior…

Word 2003中为什么修改一个段落的文章结果整篇文档的格式都变?

问题比如说&#xff0c;我选定某一段把颜色改成***&#xff0c;结果整篇文档都变成***了&#xff0c;按撤退健&#xff0c;才能达到效果&#xff08;只有这段变成***&#xff0c;其他的不变&#xff09;。答案打开格式菜单中的[样式和格式]&#xff0c;找到样式中的“正文”。 …

链表反转的两种实现方法,后一种击败了100%的用户!

作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;链表反转是一道很基础但又非常热门的算法面试题&#xff0c;它也在《剑指Offer》的第 24 道题出现过&#xff0c;至于它有多…

C++总结篇(4)内存管理

C语言中用malloc/realloc/calloc/free进行空间的申请与释放&#xff0c;在C中用新的方式进行空间的申请与释放。 申请一个int型的空间并释放 //C语言&#xff1a;int *ptr(int)malloc(sizeof(int));free(ptr); //C: int *ptr new int;delete ptr; C的申请方式更为简洁方便&…

debug和release的区别

1。Debug和Release有什么区别&#xff0c;为什么要使用Release版本&#xff01; 2。怎么把Debug转成ReleaseDebug版本包括调试信息&#xff0c;所以要比Release版本大很多&#xff08;可能大数百K至 数M&#xff09;。至于是否需要DLL支持&#xff0c;主要看你采用的编译选项。…

人工智能ai 学习_人工智能中学习代理的要素

人工智能ai 学习As already discussed, the Learning agents have the capability to improve their knowledge base by Learning from their surroundings by themselves, without any help or input from the user or the client. 如已经讨论的那样&#xff0c; 学习代理可以…

squid代理服务器(捎带的SNAT)

1.传统代理传统代理可以隐藏IP地址 多用于Internet 在Linux中 默认没有安装squid 所以要安装 在red hat中 还要安装perl 语言包的支持 squid代理服务器需要两块网卡 首先保证你的流量是从linux服务器上过的 所以先保证做完SNAT可以互相通信1&#xff09;配置网络参数在试验中一…

MySQL开源工具推荐,有了它我卸了珍藏多年Nactive!

作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;最近无意间发现了一款开源免费的 MySQL 客户端管理工具&#xff0c;磊哥试用了两天感觉还行&#xff0c;所以今天推荐给各位…

C++总结篇(3)String类

string是表示字符串的字符串类&#xff0c;该类的接口与常规容器的接口基本相同&#xff0c;再添加了一些专门用来操作string的常规操作。string在底层实际是&#xff1a;basic_string模板类的别名&#xff0c;typedef basic_string<char, char_traits, allocator> strin…