一、引用

引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。

引用的声明方法:类型标识符 &引用名=目标变量名;

  例: 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)的更多相关文章

  1. (系统架构)标准Web系统的架构分层

    标准Web系统的架构分层 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求的不同,不一定每一层 ...

  2. 深究标准IO的缓存

    前言 在最近看了APUE的标准IO部分之后感觉对标准IO的缓存太模糊,没有搞明白,APUE中关于缓存的部分一笔带过,没有深究缓存的实现原理,这样一本被吹上天的书为什么不讲透彻呢?今天早上爬起来赶紧找了 ...

  3. [APUE]标准IO库(下)

    一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中 ...

  4. [APUE]标准IO库(上)

    一.流和FILE对象 系统IO都是针对文件描述符,当打开一个文件时,即返回一个文件描述符,然后用该文件描述符来进行下面的操作,而对于标准IO库,它们的操作则是围绕流(stream)进行的. 当打开一个 ...

  5. Python标准库--typing

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 1 模块简介 Python 3.5 增加了一个有意思的库--typ ...

  6. Python标准模块--ContextManager

    1 模块简介 在数年前,Python 2.5 加入了一个非常特殊的关键字,就是with.with语句允许开发者创建上下文管理器.什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情. ...

  7. [C#] 进阶 - LINQ 标准查询操作概述

    LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...

  8. C++标准库实现WAV文件读写

    在上一篇文章RIFF和WAVE音频文件格式中对WAV的文件格式做了介绍,本文将使用标准C++库实现对数据为PCM格式的WAV文件的读写操作,只使用标准C++库函数,不依赖于其他的库. WAV文件结构 ...

  9. JSP 标准标签库(JSTL)

    JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...

  10. 「标准」的 JS风格

    首先,这份 JS风格指南已经在我司的前端团队实行半年多了: 其次,在程序员的世界里,从入行到资深都需要面对几个世界级的难题,如: 世界上最好的编辑器是什么? 是用空格还是 TAB?用空格还特么衍生出 ...

随机推荐

  1. 02.Jquery Mobile介绍以及Jquery Mobile页面与对话框

    一.为什么要学Jquery Mobile   JqueryMobile 是jquery的移动版本,懂基本的jquery知识,会简单的html+css就可以完成很多复杂的功能,还有就是这个框架在企业中用 ...

  2. js根据等号(=)前名称获取参数值

    var GetUrlParam=function (paraName) { var url = document.location.toString(); var arrObj = url.split ...

  3. Luogu P2341 [HAOI2006]受欢迎的牛 SCC缩点

    把强连通分量缩点,如果有且仅有一个出度为0的强连通分量,那么答案就是他的size:如果有多个入度为0的,那么没有明星牛. #include<cstdio> #include<iost ...

  4. Netty(4-1)factorial~总结

    本节大纲: 1.Handler的执行顺序2.自定义二进制协议(每条完整数据的组成),从而解决拆包和粘包.3.通过为每个channel创建新的handler,从而解决即使handler中使用全局变量,也 ...

  5. 爬虫(BeautifulSoup4)——安装

    环境:python3 win10 安装这个心好累啊!网上找了很多办法都安装不成功,后来换了几个安装包,最后4.4.1版本的包终于能用了! https://blog.csdn.net/www520507 ...

  6. zuul 自定义路由映射规则

    zuul本射自动创建eureka中的服务的路由

  7. IE盒子模型和W3C盒子模型

    IE盒模型出现在ie5.5以下的版本当中,ie6以上就实行W3C盒模型. box-sizing有两个属性,border-box和content-box. border-box对应传统的盒子模型,即ie ...

  8. 零基础逆向工程17_PE结构01_PE头解析_手动

    PE文件的两种状态 1.在硬盘中 节省硬盘空间 硬盘对齐 内存对齐 2.在内存中 3.PE磁盘文件与内存映像结构图 PE文件为什么要分节 -- 手动解析:PE文件 分析软件:飞鸽传书http://ww ...

  9. 数据库操作----找了MySQL和SQL Sever两个的基础语句

    这是MySQL的基本操作: 1 登入数据库:mysql -uroot -p+密码 (SQL Sever登入: osql -U 用户名 -P 密码) 显示已存在的数据库:show databases; ...

  10. ionic 2 起航 控件的使用 客户列表场景(四)

    接下来,我们的客户列表要怎么刷新数据呢? 我们不会安卓开发,不会ios开发,没关系,我们还有ionic 2.ionic 2的控件 Ion-refresher 轻松帮我们搞掂. <!--下拉刷新- ...