【1】函数直接返回一个栈上面的对象，是会调用移动构造还是复制构造？？
实际测试=>
（1）在MSVC中，不开优化时调用移动构造，开启优化时，编译器直接在返回值位置构造对象，避免拷贝/移动。
称为NRVO优化 [NRVO​ 是 Named Return Value Optimization​ 的缩写，意思是 "命名返回值优化"。]。因为在函数中，返回的是一个有名字的局部变量。

【2】noexcept干嘛的？
用于优化。
很多标准库容器（如 std::vector）操作在重新分配内存时，会根据移动操作的 noexcept决定策略。
即检查移动操作是否是 noexcept来选择"移动还是拷贝"。
比如std::vector<ClassA>，在扩容时，默认调用ClassA的拷贝构造函数，因为假如默认移动构造，移动到某个位置突然异常了，这时候没法“复原”数据，
因为移动，原容器不能用了，又因为没有移动完，移动后的也不能用，只能终止。但用户意愿可能需要可以恢复，所以默认不调用移动构造。
如果用户明确表明了noexcept，那么表示可以接受如果移动失败终止的结果。