标签:初始化 cpp 数据 指针 shared 静态成员 weak_ptr 冲突 字节
1. 全局静态变量
内存中位置:静态存储区,且程序运行期间一直存在。
未经初始化的全局静态变量自动初始化为0。
全局静态变量在声明文件之外是不可见的。
2.局部静态变量
内存中位置:静态存储区。
未初始化自动初始化为0。
作用域为局部作用域,但离开作用域后不会销毁,仍然驻留在内存中,再次访问时值不变。
3.静态函数
函数定义声明默认为extern,但静态函数只在声明的文件中可见,其他文件不可见。
即使用static修饰则该函数只能在本文件中使用,且不会与其他文件中同名函数冲突。
全局函数应在头文件中声明,局部函数在cpp中声明带static
4.类静态成员
同一个类中静态成员在多个对象之间数据共享。
5.类静态函数
.在静态成员函数中不能直接引用类中的非静态成员,但可以引用类中的静态成员。静态成员函数中药引用非静态成员时要通过对象来引用
1. 指针有分配空间(大小是4个字节),引用没有(sizeof大小为引用对象的大小)
2. 指针初始化为NULL(nullptr),引用必须初始化为一个已有对象的引用。
3.参数传递时,指针需要解引用(*)才可以对对象操作,引用则可以直接修改。
4.指针在使用中可以改变指向的对象,但引用仅是别名,不能改变。
5.可以有多级指针,但引用只有一级(&&为右值引用)
四个智能指针为:shared_ptr,weak_ptr,unique_ptr,auto_ptr,前三个C++11支持
智能指针原理:智能指针为一个类,超出类作用域后,类会子懂调用析构函数,析构函数则会自动释放资源。
所以智能指针即在函数结束时自动释放内存空间,不需要手动释放。
标签:初始化 cpp 数据 指针 shared 静态成员 weak_ptr 冲突 字节
原文地址:https://www.cnblogs.com/wshr007/p/11425089.html