C++20中的指定初始化器(designated initializers)

      指定初始化器(designated initializers, 指定初始值设定项)语法如下:C风格指定初始化器语法,初始化数据成员的一种便捷方式

T object = { .des1 = arg1, .des2 { arg2 } ... };
T object { .des1 = arg1, .des2 { arg2 } ... };

      说明:

      1.每个指示符(designator)必须命名T的直接非静态数据成员,并且表达式中使用的所有指示符必须以与T的数据成员相同的顺序出现。

      2.使用点运算符(.)后跟成员名称来指定要初始化的成员。

      3.禁止收缩转换(narrowing conversion)。

      4.每个联合(union)只能提供一个初始化器。

      5.指定初始化器列表中未明确列出的任何成员字段均会进行默认初始化

      6.也可用于初始化嵌套的结构或数组(nested structs or arrays),但指示符不能嵌套。

      7.不能混合designated and non-designated initialization。

      以下为测试代码:

namespace {struct A { int x; int y; int z; };
union u { int a; const char* b; };struct B {std::string str;int n = 42;int m = -1;
};struct D {A a;int m;int n;
};} // namespaceint test_designated_initializers()
{A a{ .x = 1, .z = 2 }; // a.y initialized to 0std::cout << "value: " << a.x << "," << a.y << "," << a.z << std::endl;A b = { .y{1}, .z{2} }; // b.x initialized to 0std::cout << "value: " << b.x << "," << b.y << "," << b.z << std::endl;//A c{ .y = 2, .x = 1 }; // error; designator order does not match declaration orderu f = { .b = "blog" }; // active member of the union is bstd::cout << "value: " << f.b << std::endl;B x{ .m = 8 };std::cout << "value: " << x.str << "," << x.n << "," << x.m << std::endl;//B y{ .str{"c++20"}, .n{6}, 8 }; // error C7556: 不能将指定初始值设定项与非指定初始值设定项混合//D t{ .a.x{1} }; // error C7558: 标准C++指定初始值设定项中不允许嵌套的成员访问; 请使用嵌套的初始值设定项列表D w{ .a{a}, .m{6}, .n{8} };std::cout << "value: " << w.a.x << "," << w.a.y << "," << w.a.z << "," << w.m << "," << w.n << std::endl;return 0;
}

      执行结果如下图所示:

      GitHub:https://github.com/fengbingchun/Messy_Test

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/44955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024做TEMU跨境电商,全托管/半托管模式怎么选?

如果说2023年&#xff0c;“全托管”是跨境圈的热词&#xff0c;那2024年一定少不了“半托管”。 自2024年1月&#xff0c;速卖通首次推出半托管模式后&#xff0c;引发了众跨境卖家的热议&#xff1b;而TEMU随后在3月也推出半托管模式&#xff0c;便迅速使得半托管这一模式开始…

盲人出行好帮手:蝙蝠避障让走路变简单

在一片无光的世界里&#xff0c;每一步都承载着探索与勇气。我是众多盲人中的一员&#xff0c;每天的出行不仅是从&#xff21;点到&#xff22;点的物理移动&#xff0c;更是一场心灵的征程。我的世界&#xff0c;虽然被剥夺了视觉的馈赠&#xff0c;却因科技的力量而变得宽广…

WEB DEVELOPMENT AND APPLICATIONSB DW4213

TASK 1. Pick a topic. o Decide on a product to sell. It can be any product that can be sold online. You may refer to websites such as Lazada or Shopee to get some inspiration. o Example: − Computer Store − Smartphone Store − Vitamins &am…

Visual Studio 2019 (VS2019) 中使用 CMake 配置 OpenCV 库(快捷版)

2024.07.11 测试有效 最近需要用一下 opencv 处理图像&#xff0c;简单配置了一下Cmake下的 opencv 库。 没有编译 opencv &#xff0c;也不知道他们为什么要自己编译 opencv 。 一、下载并安装 OpenCV 1.前往 OpenCV 官方网站 下载适用于您的系统的 OpenCV 安装包。 2.点击直接…

Java高级重点知识点-23-网络编程

文章目录 网络编程入门软件结构网络通信协议协议分类网络编程三要素 TCP通信程序通信步骤Socket类ServerSocket类简单的TCP网络程序 文件上传【拓展】 网络编程入门 软件结构 C/S结构 &#xff1a;全称为Client/Server结构&#xff0c;是指客户端和服务器结构。B/S结构 &…

AI Earth——2020年中国建筑物高度CNBH数据产品(10m)

数据介绍: 复旦大学生命科学学院GC3S团队(吴万本博士、赵斌教授等)利用多源地球观测数据和机器学习技术,构建了中国第一个10米分辨率的建筑高度估计模型(CNBH-10m)。基于此模型建立了中国10米分辨率的建筑高度数据集。此数据集基于全天候地球观测(雷达、光学和夜光图像)…

Iridient Developer:解锁Mac RAW图像处理的极致潜力,打造专业级色彩与细节

Iridient Developer for Mac是一款专为Mac用户设计的RAW图像调整软件&#xff0c;它以其卓越的性能和丰富的功能&#xff0c;赢得了众多摄影师的青睐。以下是对这款软件的详细介绍&#xff1a; 一、强大的RAW图像处理能力 Iridient Developer专为处理RAW图像而设计&#xff0…

使用Python实现深度学习模型:在嵌入式设备上的部署

引言 随着物联网&#xff08;IoT&#xff09;和嵌入式系统的发展&#xff0c;将深度学习模型部署到嵌入式设备上变得越来越重要。这不仅可以实现实时数据处理&#xff0c;还能大幅降低数据传输的延迟和成本。本文将介绍如何使用Python将深度学习模型部署到嵌入式设备上&#x…

Android WebView由于重定向造成的goBack()无效的问题解决

当加载重定向Url时&#xff0c;webView不能一级一级goback返回上一页面的问题 override fun shouldOverrideUrlLoading(webView: WebView, url: String): Boolean {//网页在webView中打开webView.loadUrl(url)return true}override fun onPageStarted(webView: WebView?, s: S…

Jtti:在SQL数据库中怎么实现数据的跨平台传输?

在SQL数据库中实现数据的跨平台传输可以通过以下几种常用的方法。这些方法适用于不同的数据库系统&#xff0c;并可以满足不同的需求和环境。 1. 使用数据库备份和恢复 MySQL 备份数据库&#xff1a; mysqldump -u [username] -p [database_name] > [backup_file].sql 恢复数…

Eel 入门:实现 Python 程序的 Web 前端界面

Eel 入门&#xff1a;实现 Python 程序的 Web 前端界面 Eel 是一个 Python 库&#xff0c;它允许 Python 程序通过简单的 API 与网页进行交互。它使用 WebSocket 协议来实现 Python 后端和 JavaScript 前端之间的实时通信。下面是关于 Eel 的用法、通信原理和使用场景的一篇博…

float、double

按照这个规定&#xff0c;单精度浮点数&#xff08;float&#xff09;这个数据类型所占内存大小为4个字节&#xff0c;也就是32位&#xff0c;所以单精度浮点数也叫32位浮点数&#xff0c;它在内存或硬盘中要占用32个比特。 单精度浮点数的尾数部分用23位存储&#xff0c;加上默…

链接库是什么

所谓链接库&#xff0c;从字面上理解&#xff0c;指的是程序在“链接”阶段使用的代码库。 “链接”是源程序转换成可执行程序必须经历的步骤之一&#xff0c;考虑到一些初学者对程序的运行过程还不了解&#xff0c;接下来先解释一下“链接”的含义&#xff0c;再系统地讲解链接…

09磁盘管理

一、磁盘管理 1.磁盘基础知识 &#xff08;1&#xff09;磁盘接口类型 个人电脑&#xff0c; 硬盘接口分为IDE类型和SATA类型 服务器版分为SCSI类型和SAS类型 &#xff08;2&#xff09;磁盘命名方式 windows中硬盘命名方式是c&#xff0c;d,e盘 linux中硬盘命名方式为 系统…

HTML+CSS+JS 实现3D风吹草动效果(B站视频)

效果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>3D effect&…

开发指南043-自定义注解

现代Java编程大量使用注解&#xff0c;可以很方便的简化编程&#xff0c;提高编程效率。作为一个平台&#xff0c;也定义了自己的注解。过程如下&#xff1a; 第一步新建java文件&#xff0c;非常类似接口类&#xff1a; import java.lang.annotation.*; public interface …

[迫真保姆级教程]在Windows上编译可用的Tesseract OCR in C++ 并部署在Visual Studio与Qt6上

目录 前言 阅前提示 导言 使用基于vcpkg的&#xff0c;于msvc19编译器编译的Tessereact OCR动态库 使用vcpkg辅助我们的编译 正文 使用msys2环境下的&#xff0c;使用mingw64编译器编译的Tessereact OCR动态库 什么是msys2 安装前&#xff0c;我们也许。。。 [Option]…

网络钓鱼中的高级同形异义:网络安全的新威胁

网络安全正面临一个潜在的新威胁&#xff1a;在网络钓鱼攻击中使用同形异义词。 这篇调查文章探讨了同形异义现象如何在各种类型的网络钓鱼攻击中使用、其背后的技术。 对这种恶意行为的研究以及高级语言模型 (LLM) 如何帮助加速同形异形现象的研究。 什么是同形异义&#xf…

dxf数据结构

DXF&#xff08;Drawing Exchange Format&#xff0c;绘图交换格式&#xff09;是Autodesk公司开发的一种CAD&#xff08;计算机辅助设计&#xff09;文件格式&#xff0c;用于实现AutoCAD与其他软件之间的CAD数据交换。DXF格式文件是一种开放的矢量数据格式&#xff0c;具有多…

怎么办?我的C盘又爆红了!别慌!博主手把手带你管理你的C盘空间~

怎么办&#xff1f;我的C盘又爆红了&#xff01;别慌&#xff01;博主手把手带你管理你的C盘空间~ 文章目录 怎么办&#xff1f;我的C盘又爆红了&#xff01;别慌&#xff01;博主手把手带你管理你的C盘空间~0. 在开始清理之前1. 推荐执行的操作1.1 清理系统缓存文件1.2 磁盘清…