返回多值
待补充~视频讲了项目,不太想听
模板
模板允许你定义一个根据你的用途进行编译的模板,模板在编译的时候会被评估,并不是一个实际的代码,当被调用的时候才会被创建,在尖括号中指定类型进行转换(string),关键词typename和class一样。
template<typename T>
void Print(T value) {
std::cout << value << std::endl;
}
Print<std::string>("lhx");
Print(1);
Print(1.4f);
Print("2");
下面创建一个,我们创建的Array与标准数组类在C++标准模板库中的工作方式非常相似,可以指定任意类型:
template<typename T,int N>
class Array {
private :
T m_Array[N];
public :
int GetSize()const { return N; }
};
Array<std::string, 50> array;
但是好多公司禁用模板,因为当模板用的很多的时候,模板太复杂代码会很乱,需要手动调整看哪些代码别编译。
堆、栈
栈:
- 栈通常是预定义的内存区域,2M
- 在栈上分配内存就是一条cpu指令
堆:
- 堆是一个预定义了默认值的区域
- 堆上分配内存就是一堆的事
所以要尽可能地用栈来分配内存,除非需要的数据很大或者作用周期很长,栈数据可以放在cpu缓存线上,cache line可理解为cpu cache中最小缓存单位。
配置输出汇编语言