三元运算符 栈 堆 隐式转换 笔记

是什么:
相当于if语句的语法糖
代码示例:
std::string rank=level>10?"Master":"Begining";
判断条件?为真保留:为假保留;
可以嵌套使用,最好别用 看的头疼;
栈通常非常小 通常为1兆2兆;
浅要提及
堆上分配比栈花费更多时间,而且要手动释放内存
若对象太大或要显式地控制对象的生存期,就在堆上建立、
堆空间可生长
栈上释放内存没有消耗
堆的工作原理:
类似malloc 有个空闲列表 会在其中找符合要求的空间返回地址,再记录哪块空间被使用了

int *num=new int;//会在内存中的空闲列表中找四个字节的连续内存,然后给我们改块
//空间的首地址

隐式转换

using string = std::string;
class Entity
{
private:
	std::string m_name;
	int m_age;
public:
	Entity(const string& name)
		:m_name(name), m_age(0)
	{
		
	}
	Entity(int age)
		:m_name("Unknown"), m_age(age)
	{
	}
};
int main()
{
	Entity a("hello");
	Entity b(22);

Entity c=string("wzs");
Entity d=22;//隐式构将22转成一个Entity构造出一个Entity,Entity的一个构造函数接受整型参数

explicit
功能:
禁用隐式转换
位置:
构造函数前

posted @ 2024-07-13 14:53  Wzline  阅读(2)  评论(0编辑  收藏  举报