当前位置: 首页 > news >正文

苏州专业网站制作网络工程毕业后干什么

苏州专业网站制作,网络工程毕业后干什么,小程序微信如何开发,企业网站内容是什么拷贝交换技术#xff08;copy and swap#xff09;是什么#xff0c;网上估计能查到很多。但网上有点难找到完整的演示代码#xff0c;所以这里记录一下。难点在于#xff1a; 如果要满足 5 的原则#xff0c;我到底要写那些函数#xff1f; 默认构造函数、复制构造函数…拷贝交换技术copy and swap是什么网上估计能查到很多。但网上有点难找到完整的演示代码所以这里记录一下。难点在于 如果要满足 5 的原则我到底要写那些函数 默认构造函数、复制构造函数、析构函数、swap 函数。剩下三个函数是固定模板boilerplate不用写与类相关的代码。由于两种重载赋值运算符合并成一个了所以只剩两个函数需要写固定模板。哪些是 noexcept 的 必须是 noexcept 的函数移动构造函数重载赋值运算符注意只剩一个了交换函数。交换函数和 std::swap 的关系如何 必须自己写一个属于这个类的交换函数在实现拷贝交换技术时不能调用 std::swap。在类外面可以通过 using std::swap; 的方法让编译器优先选用自己实现 swap 函数如不存在再回退到 std::swap在类外面也可以直接都用 std::swap无所谓。 #include cassert // assert #include utility // swapclass Demo {using Self Demo;public:int ichi{}; // Note 1: 这里初始化为 0又在默认构造函数初始化为 1是为了说明委托默认构造函数的作用。特别地如果存在成员没有用大括号初始化就更需要委托默认构造函数完成所有成员的初始化。// 要么为 nullptr要么为大小为 1 的数组。int* ein{};public:// Note 2: 默认构造函数是否是 constexpr, noexcept 的视实际情况而定。constexpr Demo() noexcept : ichi{ 1 }, ein{ nullptr } {}// Note 3: 复制构造函数通常涉及内存分配一般不是 noexcept 的。Demo(const Self other) : Demo() { // Note 4: 需要委托默认构造函数见 Note 1。不委托无法通过 assert。assert(ichi 1);assert(ein nullptr);ichi other.ichi;if (other.ein) {ein new int[ichi] { other.ein[0] };}}// Note 5: 使用拷贝交换技术需要实现 swap 的函数。// Note 6: swap 函数应当是 noexcept 的。friend void swap(Self a, Self b) noexcept {// Note 7: 交换成员对象时可以优先使用类型自己定义的友元函数 swap不存在才回退到 std::swap。using std::swap;swap(a.ichi, b.ichi);swap(a.ein, b.ein);}// Note 8: 移动构造函数应当是 noexcept 的。Demo(Self other) noexcept : Demo() { // Note 9: 需要委托默认构造函数见 Note 1。不委托无法通过 assert。assert(ichi 1);assert(ein nullptr);swap(*this, other); // Note 10: 使用拷贝交换技术时必须使用自己定义的友元函数绝不要使用 std::swap。}// Note 11: 重载赋值运算符可以只写一个且应当是 noexcept 的。异常在复制构造函数中发生不在赋值运算符中发生。Self operator(Self other) noexcept {swap(*this, other); // Note 12: 使用拷贝交换技术时必须使用自己定义的友元函数绝不要使用 std::swap。return *this;}// Note 13: 析构函数是否是 constexpr 的视情况而定。constexpr ~Demo() { // Note 14: 析构函数默认总是 noexcept 的不写。if (ein) {delete[] ein;}} };int main() {// 测试 constexpr 默认构造。constexpr Demo default_obj;static_assert(default_obj.ichi 1);// 测试默认构造。Demo allocated_obj;allocated_obj.ein new int[1] { 114514 };{// 测试复制构造。Demo test_copy_constructor allocated_obj;assert(test_copy_constructor.ein[0] 114514);assert(allocated_obj.ein[0] 114514);// 测试移动构造。Demo test_move_constructor std::move(test_copy_constructor);assert(test_move_constructor.ein[0] 114514);assert(test_copy_constructor.ein nullptr);}{// 测试复制赋值。Demo test_copy_assignment;test_copy_assignment allocated_obj;assert(allocated_obj.ein[0] 114514);// 测试移动赋值。Demo test_move_assignment;test_move_assignment std::move(test_copy_assignment);assert(test_move_assignment.ein[0] 114514);assert(test_copy_assignment.ein nullptr);} }
http://www.w-s-a.com/news/637831/

相关文章:

  • 做网站台式还是笔记本网上下载的免费网站模板怎么用
  • 高校网站群管理系统凡科建站是永久的吗
  • 深圳网站建设服务电话网站通栏设计素材
  • 网站里面的视频功能怎么做网站名注册
  • 网站游戏下载厦门php网站建设
  • 沈阳关键词网站排名一台服务器做两个网站吗
  • 哪个行业该做网站但是没有做dom手表官方网站
  • 网站建设费 大创wordpress中函数get
  • 怎样建设个自己的网站首页有没有专门教做扯面的网站
  • 网站后台怎么添加模板教育类网站开发公司
  • 网站的外链是什么php创建一个网站
  • 语文建设 官方网站网络工程可以从事什么工作
  • 无锡便宜做网站如何下载网站模板
  • 南宁高端网站网络小说网站推广策划方案
  • 苏州网站制作方法建设银行 网站
  • 技术网站推广范例素材网站哪个好
  • 网站找人做的他能登管理员吗网站建设一般多少钱
  • 衡水哪有做网站的wordpress主题站主题
  • 网络建设的流程网站公司注册资本
  • 杭州旅游团购网站建设建立一个网站需要哪些步骤
  • 实木餐桌椅网站建设浦东网站建设哪家好
  • 高端手机网站定制网站网络推广推广
  • 做网站的颜色大学网站群建设方案
  • 淄博学校网站建设哪家好网站集约化建设规范
  • 专业论坛网站有哪些如何制作h5页面视频
  • 南京整站优化网站备案负责人一定要法人
  • 北京正规网站建设公司php网站开发实训感想
  • 织梦网站地图怎么做腾讯网站开发语言
  • 站长之家alexa排名wordpress html 标签
  • WordPress建站主机推荐工程公司的经营范围