c++命名空间、作用域

类的构造函数:
默认构造函数:1)不接受任何参数 2)所有参数均有默认赋值
初始化形式:
在这里插入图片描述
作用域:变量在文件的多大范围内可见,局部作用域,只能在变量定义的代码块总可见,全局作用域,在定义至文件结束可见;在命名空间声明的函数作用域为整个命名空间
链接性:变量在不同文件间的共享性,内部链接性,可以由文件内部的函数共享,外部链接性,文件间共享
C++用三种不同方案来存储数据,区别为数据在内存中的保留时间:
1) 自动存储持续性:在函数定义中被创建的变量,生存周期为其代码块,存储在栈(stack),局部作用域,没有链接性
2) 静态存储持续性:在函数定义外部或者static定义的变量,程序执行过程中一直存在
代码块外创建:外部链接性,全局作用域
代码块外、static定义:内部链接性,全局作用域
代码块内部、static定义:没有链接性,局部作用域,在程序开始时就存在在内存中,只能进行一次初始化
初始化:静态初始化,编译时初始化;动态初始化,运行时初始化
3) 动态存储持续性:用new运算符分配的内存,直到delete,存储在堆(heap)

变量声明有两种:(单定义规则,变量只能定义一次,针对外部链接性的静态变量,在文件重新定义相同名称的内部链接性静态变量在该文件中会覆盖原变量)
1) 定义:分配内存空间 2)声明:不分配内存空间,采用关键词extern,采用在其他文件中定义的变量

cin.get(arr,ArSize) 读到换行符或者ArSize-1个字符,将换行符留在输入队列中
在这里插入图片描述
所有函数都是静态存储持续性,外部链接性,可以定义成内部链接性,说明符static来定义,因此一个工程中一个函数只能包含一个定义,每个文件都要包含这个函数的声明。编译器首先判断函数链接性,内部链接性在文件内部查找,外部链接性先在其他文件中寻找,其次在库中查找。如果定义了与库同名函数首先会调用自己定义的函数

使用new来初始化:
int* pi=new int {0} 初始化
int* pi=new int [4] {0,1,2,3} 数组初始化

定位placement new 运算符,在开头包含文件,delete只能用于删除长常规new分配的堆内存,是否需要delete,看分配的内存类型
在这里插入图片描述
显示字符串数组地址的时候,要强制转换,否则会输出字符串,指针有两个属性,指向对象的地址和长度,void*指向对象的地址,不包含长度,因此可以指向任何类型
在这里插入图片描述
名称空间:
声明区间:能够进行声明的区间,c++定义了一种新的声明区域来创建命名的名称空间namespace,能够在namespace中进行声明。Namespace可以全局也可以位于另外一个namespace中。后面两种相当于重新声明了一次

  1. 想要用namespace中的声明,必须要指定来源于哪个namespace,例如std::cout;
  2. using namespace std;不过会被局部变量覆盖
  3. using std::cout,如果有重名局部变量则出现错误

命名空间标准:开发了一个函数或者类库,将其放在命名空间中,使用命名空间为了大型程序管理更加方便

STL标准模版库:STL容器基本方法,size()返回容器元素个数,swap()交换两个容器(可以是不同容器)的内容,begin()返回一个指向容器第一个元素的迭代器,end()返回一个指向超过容器尾的迭代器
容器与数组类似,STL容器存储的值类型相同,迭代器能够遍历容器的对象,与指针类似,STL使得能够构造各种容器以及执行各种操作。
第一个迭代器指向起始元素,第二个迭代器指向结束元素的下一个
在这里插入图片描述
模板类vector:
采用动态内存分配,
初始化方法:
在这里插入图片描述
STL采用非成员函数的方法用于对所有容器的操作,同时存在执行相同任务的成员函数,成员函数的效率高
在这里插入图片描述在这里插入图片描述
STL是一种泛型编程:
模版提供了容器中数据类型的通用表示
采用find函数来寻找数组和链表中的某个元素,算法实现不同,泛型编程旨在采用同一个find函数来处理不同的数据结构,使得算法独立于数据结构
迭代器提供了遍历容器的通用表示

STL对每个容器都提供了一个迭代器,每个容器都有超尾标志
1) 输入迭代器:来自容器中的信息视为输入,只能递增,不能倒退,可以从容器中读取数据
2) 输出迭代器:程序将信息传递给容器,能够修改容器中的内容,只能递增,不能倒退
3) 正向迭代器:
4) 双向迭代器:
5) 随机访问迭代器
要求高的迭代器能够使用要求低的迭代器算法,比如STL实现了一个双向链表,使用双向迭代器,能够使用输入、输出、正向、双向迭代器的算法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值