您的位置:首页 > 游戏 > 游戏 > 一条视频可以多平台发布吗_深圳南山做网站的公司_全网推广怎么做_源码交易网站源码

一条视频可以多平台发布吗_深圳南山做网站的公司_全网推广怎么做_源码交易网站源码

2024/12/27 16:05:01 来源:https://blog.csdn.net/qq_40178082/article/details/144753251  浏览:    关键词:一条视频可以多平台发布吗_深圳南山做网站的公司_全网推广怎么做_源码交易网站源码
一条视频可以多平台发布吗_深圳南山做网站的公司_全网推广怎么做_源码交易网站源码
  • C++11中 内存释放函数析构函数 都是隐式noexcept,除非手动声明noexcept(flase),但如果是一个对象的析构函数可能被标准库使用,且析构函数有可能抛出异常,那么程序的行为是未定义的
  • std::vector添加新元素如果容量不够,那么vector会分配更大的内存用于存储元素,并且之前vector中的数据会被复制或者移动到新的位置,但是如果移动操作不是noexcept,那么vector是不敢用移动操作的

移动构造函数未定义为 no-except

#include <vector>
#include <string>
#include <array>
#include <iostream>struct A
{A(std::string param){std::cout << "A(std::string param)" << std::endl;_data = param;}A(const A &a){std::cout << "A(const A& a)" << std::endl;_data = a._data;}A(A &&a) //noexcept // 不声明,就会调用拷贝操作{std::cout << "A(A&& a)" << std::endl;_data = std::move(a._data);}public:std::string _data;
};int main()
{std::vector<A> a_vec;a_vec.reserve(2);a_vec.push_back(A("nihao"));a_vec.push_back(A("nihao"));a_vec.push_back(A("nihao"));a_vec.push_back(A("nihao"));int a[10] = {0};int b[10] = {1};std::swap(a, b);return 0;
}
A(std::string param)
A(A&& a)
A(std::string param)
A(A&& a)
A(std::string param)
A(A&& a)
A(const A& a)
A(const A& a)
A(std::string param)
A(A&& a)

移动构造函数定义为 no-except

#include <vector>
#include <string>
#include <array>
#include <iostream>struct A
{A(std::string param){std::cout << "A(std::string param)" << std::endl;_data = param;}A(const A &a){std::cout << "A(const A& a)" << std::endl;_data = a._data;}A(A &&a) noexcept // 不声明,就会调用拷贝操作{std::cout << "A(A&& a)" << std::endl;_data = std::move(a._data);}public:std::string _data;
};int main()
{std::vector<A> a_vec;a_vec.reserve(2);a_vec.push_back(A("nihao"));a_vec.push_back(A("nihao"));a_vec.push_back(A("nihao"));a_vec.push_back(A("nihao"));// 标准库实现swap// template <class T, size_t N>// void swap(T (&a)[N],//           T (&b)[N]) noexcept(noexcept(swap(*a, *b)));  //见下文//  如果swap(*a, *b) 不抛异常 //    -> noexcept(swap(*a, *b)=true //    -> noexcept(noexcept(swap(*a, *b)))//    -> noexcept//  如果swap(*a, *b) 抛异常 //    -> noexcept(swap(*a, *b)=false //    -> noexcept(noexcept(swap(*a, *b)))//    -> noexcept(false)int a[10] = {0};int b[10] = {1};std::swap(a, b);return 0;
}
A(std::string param)
A(A&& a)
A(std::string param)
A(A&& a)
A(std::string param)
A(A&& a)
A(A&& a)
A(A&& a)
A(std::string param)
A(A&& a)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com