一、引用

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

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

  例: 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、全局空间归属为匿名空间
  在全局空间定义的标识符都属于这个匿名空间,匿名空间默认开放。
  如果函数中有同名的标识符把匿名空间中的屏蔽了,可以使用空的域限定符来表示他 ::变量名

最新文章

  1. node03-events
  2. Unity Standard Assets 简介之 Cameras
  3. 无锁数据结构(Lock-Free Data Structures)
  4. Azure Remote Desktop: &quot;An error occurred while loading from file *.rdp&quot;
  5. tomcat异常: Cannot get a connection, pool exhausted
  6. reactjs入门到实战(九)----ajax的应用
  7. js冲突
  8. 【HDOJ】2809 God of War
  9. 使用Oracle 9i工具管理数据库 - 初学者系列 - 学习者系列文章
  10. BZOJ-1012-[JSOI2008]最大数maxnumber(线段树)
  11. WPF介绍
  12. Docke--Dockerfile指令介绍
  13. MySQL源码包编译安装
  14. JS监听滚动条进度
  15. C# IO流的操作(二)
  16. Python中操作Redis
  17. MyBatis下MySqL用户口令不能为空
  18. Consul之:key/value存储
  19. 【Windows编程】大量病毒分析报告辅助工具编写
  20. css抠图之background-position-背景定位

热门文章

  1. Centos下安装pip失败或新装
  2. NOI2015品酒大会 后缀数组
  3. 优化MyEclipse编译速度慢的问题
  4. 爬虫(BeautifulSoup4)——安装
  5. linux yum 安装
  6. 047 Permutations II 有重复数字的全排列
  7. redis和mysql同步 终极解决方案
  8. spring事务的开启方式(编程式和声明式)
  9. Git 连接远程仓库Github
  10. 从typeof()说起