文章目录
类型转换
C语言中的类型转换
在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转化,C语言中总共有两种形式的类型转换:隐式类型转换和显式类型转换。
- 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译失败
- 显式类型转化:需要用户自己处理
缺陷:
转换的可视性比较差,所有的转换形式都是以一种相同形式书写,难以跟踪错误的转换
C++强制类型转换
static_cast
static_cast用于非多态类型的转换(静态转换),编译器隐式执行的任何类型转换都可用
static_cast,但它不能用于两个不相关的类型进行转换
reinterpret_cast
reinterpret_cast操作符通常为操作数的位模式提供较低层次的重新解释,用于将一种类型转换为另一种不同的类型
reinterpret_cast还支持一个比较bug的操作
const_cast
const_cast最常用的用途就是删除变量的const属性,方便赋值
dynamic_cast
为什么C++需要四种类型转换
特殊类的设计
请设计一个类,不能被拷贝
请设计一个类,只能在堆上创建对象
请设计一个类,只能在栈上创建对象
请设计一个类,不能被继承
请设计一个类,只能创建一个对象(单例模式)
饿汉模式
就是说不管你将来用不用,程序启动时就创建一个唯一的实例对象。
懒汉模式
如果单例对象构造十分耗时或者占用很多资源,比如加载插件啊, 初始化网络连接啊,读取文件啊等等,而有可能该对象程序运行时不会用到,那么也要在程序一开始就进行初始化
,就会导致程序启动时非常的缓慢。 所以这种情况使用懒汉模式(延迟加载)更好。