标准C++(1)
一、引用
引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。
引用的声明方法:类型标识符 &引用名=目标变量名;
例: int& num;
引用类似于起别名
注意:
(1)&在此不是求地址运算,而是起标识作用。
(2)类型标识符是指目标变量的类型。
(3)声明引用时,必须同时对其进行初始化。
(4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。
(5)引用也可以当作函数的返回值,但绝不能返回一个局部变量的引用。
(6)引用可以当作函数的参数,它引用的对象就是函数的实参。引用可以达到指针的效果。
(7)引用不光可以引用标识符,也可以引用立即数,但必须加const属性
(8)不能用 返回值不是引用的函数的返回值给引用初始化
二、C++的内存管理运算符
在C++中使用 new/delete 来管理内存,new 用来申请内存,delete 用来释放内存。
具体用法如下:
#incldue <iostream>
class Student
{
char name[];
char sex;
short;
}; int main()
{
Student *stu = new Student; delete stu;
}
使用 new 创建结构对象时,会自动调用构造函数,delete 时会自动调用析构函数
【例】 Student* stu = new Student("hehe");
[]可以配合new和delete申请或释放数组。new[] 不可与delete混用,必须使用delete[]释放
int* p = new int[]{,,,,,,,,,};
delete[] stu;
三、C++的函数
C++中函数可以在main函数前执行
C++具有函数重载的功能
可以使用同一个函数名,定义多个参数不同(返回值可以不同,前提是参数不同)的函数。
C++中函数的参数可以有默认值,
1、函数的默认参数必须靠右。
2、默认参数要尽量少用,因为可能会引起重载错误
3、默认参数是编译器在编译时帮助赋值的,所以只能由全局变量、静态变量、字面值对参数进行赋值。
int func(int num1= ,char* name = "abcd")
{
} void func(char ch,short num)
{
}
四、名字空间
C++引用了名字空间的机制。
名字空间:把全局的命名空间进一步分割。可以创建出一个个独立的命名空间防止相互之间命名冲突
1、名字空间的定义
namespace name
{
//变量;
//函数;
//结构、类;
}
2、名字空间的合并
a、同名的命名空间会自动合并
b、在同一个名字空间中标识符必须是唯一的
3、定义与声明分开
namespace n1
{
//在名字空间中声明函数
void func(void);
}
//在名字空间外定义函数
void n1::func(void) {}
4、如何使用名字空间中的内容
a、域限定符(::),直接使用,名字空间::标识符。【例】 ni::func();
b、using namespace 名字空间; 功能是把名字空间中的标识符
c、using 名字空间::标识符 ,表示此标识符对后面的代码公开。
5、名字空间的嵌套
名字空间可以嵌套,但使用时要逐层解析。 n1::n2::n3::num
namespace n1
{
namespace n2
{
namespace n3
{ }
}
}
6、全局空间归属为匿名空间
在全局空间定义的标识符都属于这个匿名空间,匿名空间默认开放。
如果函数中有同名的标识符把匿名空间中的屏蔽了,可以使用空的域限定符来表示他 ::变量名
标准C++(1)的更多相关文章
- (系统架构)标准Web系统的架构分层
标准Web系统的架构分层 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求的不同,不一定每一层 ...
- 深究标准IO的缓存
前言 在最近看了APUE的标准IO部分之后感觉对标准IO的缓存太模糊,没有搞明白,APUE中关于缓存的部分一笔带过,没有深究缓存的实现原理,这样一本被吹上天的书为什么不讲透彻呢?今天早上爬起来赶紧找了 ...
- [APUE]标准IO库(下)
一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中 ...
- [APUE]标准IO库(上)
一.流和FILE对象 系统IO都是针对文件描述符,当打开一个文件时,即返回一个文件描述符,然后用该文件描述符来进行下面的操作,而对于标准IO库,它们的操作则是围绕流(stream)进行的. 当打开一个 ...
- Python标准库--typing
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 1 模块简介 Python 3.5 增加了一个有意思的库--typ ...
- Python标准模块--ContextManager
1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...
- [C#] 进阶 - LINQ 标准查询操作概述
LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...
- C++标准库实现WAV文件读写
在上一篇文章RIFF和WAVE音频文件格式中对WAV的文件格式做了介绍,本文将使用标准C++库实现对数据为PCM格式的WAV文件的读写操作,只使用标准C++库函数,不依赖于其他的库. WAV文件结构 ...
- JSP 标准标签库(JSTL)
JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...
- 「标准」的 JS风格
首先,这份 JS风格指南已经在我司的前端团队实行半年多了: 其次,在程序员的世界里,从入行到资深都需要面对几个世界级的难题,如: 世界上最好的编辑器是什么? 是用空格还是 TAB?用空格还特么衍生出 ...
随机推荐
- 15 Puzzle LightOJ - 1121
https://cn.vjudge.net/problem/LightOJ-1121 #include<cstdio> #include<algorithm> #include ...
- codeforces772C
给一段序列,给你去掉所有数字的顺序,输出每去掉一个数,当前联通的子序列的最大值. 倒着来,每次插入一个数,然后求联通的最大值,线段树每个节点标记一下,区间的左右是否插入了数字,还有如果有数字从左边/右 ...
- mycat学习日记:全局sequence
mycat分库分表的情况下,原生mysql的自增长主键无法满足主键全局唯一这个要求.看了MYCAT社区从零开始的一篇博客,加上自己的实践,大概总结一下. 目前mycat对于全局sequence主要提供 ...
- springboot使用schedule定时任务
定时任务一般会存在中大型企业级项目中,为了减少服务器.数据库的压力往往会采用时间段性的去完成某些业务逻辑.比较常见的就是金融服务系统推送回调,一般支付系统订单在没有收到成功的回调返回内容时会持续性的回 ...
- js的加密和解密
最近在研究js的加密和解密的问题,上网上搜出来很多方法,不过不知道到底哪一个会比较管用.这里是今天找到的一些关于base64加密解密的js代码,已经经过试验,可以使用,不过网上很多加密解密的工具,这种 ...
- jquery笔记1--选择器
一.概述:jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架).jQuery设计的宗旨是“write ...
- iOS VIPER架构(二)
第一篇文章对VIPER进行了简单的介绍,这篇文章将从VIPER的源头开始,比较现有的几种VIPER实现,对VIPER进行进一步的职责剖析,并对各种细节实现问题进行挖掘和探讨.最后给出两个完整的VIPE ...
- [LoadRunner]录制启动时报“The JVM could not be started……”错误解决方案
在LR准备点击录制java over http协议时,程序报如下错误: 报错提示是设置的JVM值设置问题,导致不能启动. 解决方案一 点击F4快捷按钮,会弹出以下界面,在选中的位置选择对应的java路 ...
- jmeter的安装和基本使用
本篇文章主要介绍一下JMeter的安装及基本使用方法. 1.安装 JMeter的官方网址为http://jmeter.apache.org/ 下载地址为http://jmeter.apache.org ...
- vue2.X版本vue-cli生成项目后运行失败,报错信息为getaddrinfo ENOTFOUND localhost
问题: 1.使用vue-cli生成项目 2.npm install 3.npm run dev,报错信息如下 解决方法: 经查,发现package.json中dev的脚本变成了"webpac ...