C++注意防止指针指向空
来源:互联网 发布:swfobject.js 编辑:程序博客网 时间:2024/06/12 21:04
例子
static size_t sn;class Employee{private: //std::string name; std::shared_ptr<std::string>name; size_t ID = ++sn; //每次生成唯一IDpublic: Employee() = default; //默认构造函数 Employee(const std::string &s) :name(std::make_shared<std::string>(s)){} //Employee(const std::string &s) :name(new std::string(s)){} size_t GetID()const{ return ID; } std::string GetName()const{ return *name; }};void print(const Employee s){ std::cout << s.GetID() << "\t" << s.GetName() << std::endl;}Employee a;//此处调用a的默认构造函数,name智能指针会初始化为空Employee b("zhangyi"), c = b;//print(a); //name指针为空,不能进行访问,程序运行出错print(b);print(c);
防止指针指空,运行时注意if检查;
智能指针可以用在合成拷贝函数,合成拷贝赋值运算符下,使一个类的对象初始化另外一个类(含有智能指针数据成员的类)
对于含有普通指针的类,而且构造时给它动态分配了内存空间,必须要自己定义析构函数(显示delete),然而一旦一个类定义了析构函数,那么它几乎肯定也需要一个拷贝构造函数和一个拷贝赋值运算符(C++ primer P447),定义行为像值得类,和定义行为像指针的类;
0 0
- C++注意防止指针指向空
- C语言注意问题: 空指针
- 指向数组的指针【注意】
- C语言:空指针与不指向任何对象的指针的区别
- java 防止空指针代码
- c 指向指针的指针
- C 指向指针的指针
- 空指针 NULL 指向地址0
- C指针---指向指针的指针(转)
- c语言指针,指向指针的指针
- C指针传递,指向指针的指针。
- 【C++】指针(5):指向指针的指针
- c 指向函数的指针
- 指向对象的指针【c++】
- 【C++】指向类的指针
- C 指向数组的指针
- SQL文测试数据时,注意对0件的测试!!!【0件时,防止空指针异常!】
- C语言空指针
- Realm使用简单介绍
- Linux 获取音频ALSA API编程
- iOS_广点通接入
- 质数个数
- dev kvm is not found(Android studio)
- C++注意防止指针指向空
- HTTP403错误
- VS2013发布C#自动更新程序
- 《JAVA并发编程实践》读书笔记(四)
- MySQL 的时间查询语句
- java中List与Set的常用用法
- Android 相关属性
- JAVA——继承
- 在SVM实现多分类的程序基础工作