使用空花括号初始化

2023-12-27

第一次尝试,一切正常:

class Base {
 public:
    Base() {std::cout << "default ctor!\n"; }
};
...
Base b{};
Base b_one = {};

另一种实现方式(添加explicit):

class Base {
 public:
    explicit Base() {std::cout << "default ctor!\n"; }
};
...
Base b{};
Base b_one = {};  // error! Why?

我在 cppreference 上读到,在这两种情况下都将使用默认初始化并且没有差异。

从列表初始化:

否则,如果花括号初始化列表为空并且 T 是具有默认构造函数的类类型,则执行值初始化。

从值初始化:

如果 T 是没有默认构造函数或具有用户提供或删除的默认构造函数的类类型,则该对象被默认初始化;


我在 cppreference 上读到,在这两种情况下都将使用默认初始化并且没有差异。

不,他们不一样。准确地说,Base b{}; is 直接列表初始化 https://en.cppreference.com/w/cpp/language/list_initialization#direct-list-initialization, while Base b_one = {}; is 复制列表初始化 https://en.cppreference.com/w/cpp/language/list_initialization#copy-list-initialization;对于复制列表初始化,只有非explicit可以调用构造函数。

(强调我的)

  • 直接列表初始化(显式和非显式 考虑构造函数)

  • 复制列表初始化(显式和非显式构造函数 被考虑,但是只能调用非显式构造函数)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用空花括号初始化 的相关文章

  • C++ 最大非负整数

    以下内容是否会在所有平台 int 大小等上按预期工作 或者有更容易接受的方法吗 我做了以下的事情 define MAX NON NEGATIVE INT int unsigned int 1 2 我不会通过解释它在做什么来侮辱你的智商 编辑
  • clang-tidy - 忽略第三方标头代码

    我正在为我的项目使用 CMake 并且我想向项目引入 clang tidy 检查 我用于此目的CMAKE CXX CLANG TIDY and clang tidy用于检查设置的文件 我想在 CI 中使用警告作为错误来可靠地检查提交是否引入
  • 从 proc/pid/cmdline 解析命令行参数

    我正在尝试解析命令行参数另一个程序 这是一个模拟器 在我的程序中使用system 命令和模拟器的pid 不幸的是同时使用文件读取和cat 输出格式不正确 所以我无法真正获取数据 cat在命令行上显示删除了空格的文件内容 整个字符串粘在一起
  • 可空引用类型意外 CS8629 可空值类型对于临时变量可能为空

    在 C 8 项目中 我使用可为 null 的引用类型 并收到意外的 或者至少对我来说意外的 CS8629 警告 bool singleContent x DataInt null bool multiContent x DataNvarch
  • LockBits 性能关键代码

    我有一个方法需要尽可能快 它使用不安全的内存指针 这是我第一次尝试这种类型的编码 所以我知道它可能会更快
  • 相当于一个允许重复键的排序字典

    我需要一个数据结构 可以通过与对象关联的浮动键对对象进行排序 从低到低的在前 问题是键代表成本 所以经常有重复 我不关心这一点 因为如果两个具有相同的成本 我只会抓住第一个 因为它没有区别 问题是编译器抱怨 是否有一种数据结构的行为方式相同
  • 如何从 UNC 中提取服务器名称

    谁能告诉我如何从 UNC 中提取服务器名称 ex 服务器名称 目录 目录 编辑 我很抱歉 但看起来我需要澄清一个错误 路径实际上更像是 服务器名 d 目录 我知道这可能会改变一些事情 怎么样Uri Uri uri new Uri serve
  • Python NET 调用具有返回值和输出参数的 C# 方法

    我有以下静态 C 方法 public static bool TryParse string s out double result 我想使用 Python NET 包从 Python 调用它 import clr from System
  • 一个阻塞但非模态的 QDialog?

    我有一堆图像 我想对其执行一些操作 处理完每个图像后 我的程序应该弹出一个对话框 提示用户是否要继续处理下一个图像或中止 在此之前 他们应该有机会对图像或参数进行一些手动更改 无论如何 他们必须能够访问应用程序的窗口 而调用对话框的方法的执
  • 将迭代器取消引用到临时范围时出现非指针操作数错误

    Using auto empty line auto str return str size 0 我们做得到 auto line range with first non empty ranges view drop while range
  • 如何找到 QDockWidget 标题栏的高度?

    我正在尝试找到 a 的高度QDockWidget标题栏 以便对自定义布局进行一些智能调整大小 但标题栏不是单独的小部件 它内置于停靠小部件的私有布局中 并且没有成员可以访问它 还有其他方法可以找到它的高度吗 是的 您可以使用以下命令找到标题
  • 在 Visual Studio 中调试时向后拖动指令指针

    如需演示 请查看 基本上 我知道这在 Visual Studio Community Edition 2015 中是可能的 我想知道 a 这与 Intellitrace 和 历史调试 有关吗 b 这样做会有副作用吗 或者这只是将指令向后移动
  • 从网站保存嵌入的 pdf

    我正在编写一个小型 C 应用程序来管理供应商提供的 化学品 安全数据表 目前 我手动搜索该化学品并保存 pdf 并在我的程序中添加指向 pdf 的链接 问题是我还有很多化学品需要处理 所以最好将过程自动化 例如 化学品的部件号如下 2710
  • 在 QtCreator 中查看数组内容

    调试时是否可以在 Qt Creator 中查看数组的内容 似乎检测到我的数组是一个数组而不是一个指针 此外 我可以点击一个箭头 就像展开一样 但之后什么也没有显示 当我试穿的时候std vector Qt Creator 设法按预期显示内容
  • 自定义编译器警告

    在 Net 中使用 ObsoleteAtribute 时 它 会向您发出编译器警告 告诉您该对象 方法 属性已过时 应使用其他内容 我目前正在从事一个需要大量重构前员工代码的项目 我想编写一个自定义属性 可用于标记方法或属性 这些方法或属性
  • 在 Qt C++ 中使用多个键

    我正在构建 坦克 游戏 我使用关键事件在地图上运行我的坦克 实际上我当时只能使用一把钥匙 但我需要有能力去完成任务 同时向上和离开 这是我的单键事件代码 switch event gt key case Qt Key Up if ui gt
  • 使用 std::set 时重载运算符<

    这是我第一次使用 std set 容器 并且我对操作符 std less 遇到了问题 我声明该集合 std set
  • 奇怪的 MSC 8.0 错误:“ESP 的值未在函数调用中正确保存...”

    我们最近尝试将一些 Visual Studio 项目分解为库 并且在测试项目中一切似乎都编译和构建得很好 其中一个库项目作为依赖项 然而 尝试运行该应用程序给我们带来了以下令人讨厌的运行时错误消息 运行时检查失败 0 ESP 的值未在函数调
  • C/C++ 中的最小二乘回归

    如何在 C C 中实现因子分析的最小二乘回归 the黄金标准是LAPACK http www netlib org lapack lug node27 html 你特别想要xGELS
  • 如何注销多个非当前用户的会员用户?

    我正在使用属于 MVC2 默认项目一部分的 MembershipProvider 我希望能够获取用户名列表 注销用户 并在需要时销毁他们的会话 我能想到的最接近的是 foreach string userName in UserNames

随机推荐

  • PHP upload_max_filesize

    我的 php 文件上传有问题 在我的 php ini 中 upload max filesize 设置为 4mb 当我尝试上传大于该文件的文件时 我从未像预期的那样收到 UPLOAD ERR INI SIZE 错误 但页面再次显示表单 但没
  • 适用于 Google BigQuery 标准 SQL 的任何 JDBC 驱动程序

    我需要 JDBC 驱动程序将我的应用程序连接到 Google BigQuery 我尝试了 CData JDBC 驱动程序 但它不支持所有类型的标准 SQL 查询 还有其他完整的选择吗 官方BigQuery 的 JDBC 驱动程序 https
  • 即复杂的子域cookie问题

    我所有的 cookie 在子域上都工作得很好 但如果子域中有 那么 cookie 根本不会被读取 也根本不会正确 以下是我的测试结果 它将自我解释 justlife demo com works fine just life demo co
  • 如何通过 Google Tag Manager for Next-Js 设置 Google Analytics?

    以前我使用react ga npm 模块在我的下一个js 应用程序中插入谷歌分析 就是这样 import ReactGA from react ga export const initGA gt ReactGA initialize UA
  • 当新子项添加到 Firebase 数据库时发送通知

    我在我的应用程序中使用 Firebase 数据库 当新订单添加到数据库 新子添加到数据库 时 我需要向管理员发送通知 我发现了一个名为 Firebase 云消息传递的东西 但我不知道如何使用它 有什么帮助吗 Firebase Cloud M
  • 使用动态参数查询 Diesel 表

    我开始考虑使用 Diesel 来查询数据库 我有一个类似于下面结构的表格 这只是一个玩具项目 旨在帮助我了解 Diesel 的工作原理 derive Queryable Insertable table name posts struct
  • ServletContextListener 严重:配置类 marktest.Config 的应用程序侦听器时出错

    我的 Java servlet 似乎抱怨它找不到包 marktest 中包含的文件 我使用 Eclipse Indigo 和 Tomcat7 进行开发 这是错误 SEVERE Error configuring application li
  • 选择除一个元素之外的所有主体

    我试图选择 jQuery 中除 this 或悬停的元素之外的所有主体元素 我试图让身体达到一定的不透明度 但 这个 是为了保持其不透明度 这是我的代码 content img mouseenter function this animate
  • 自定义形状旋转问题

    我正在尝试围绕其中心旋转自定义形状 但无法获得预期的结果 我想要的是 形状应绕其中心旋转而不移动自身 我的解决方案目前正在做的是围绕其中心旋转整个形状 每次旋转都会改变其位置 我有多个形状 所以我创建了一个类来封装形状及其在以下类中的转换
  • CSS:百分比最小高度元素嵌套在百分比最小高度元素中

    我想让 html body 和wrapper 元素的最小高度都为 100 以便覆盖整个查看窗口 但我发现我只能使 html 遵守此声明 html body wrapper min height 100 html border 2px red
  • 随机化两个值之间的矩阵元素,同时保持行和列总和固定 (MATLAB)

    我遇到了一些技术问题 但我觉得使用 MATLAB 强大的工具集应该可以实现 我拥有的是一个由 0 和 w 组成的随机 n n 矩阵 例如生成的 A w rand n n
  • 动态ul li添加滚动条

    我搜索了许多帖子和论坛 因为我认为这可能是一个基本的东西 但没有找到它 所以在这里询问 我想做的就是添加滚动条 如果高度超过一定限制 假设菜单项超过3 我创建了一个jsfiddlehttp jsfiddle net euSWB http j
  • 了解多重继承中的虚表

    我有一个实现两个抽象类的类 如下所示 没有虚拟继承 无数据成员 class IFace1 public virtual void fcn int abc 0 class IFace2 public virtual void fcn1 int
  • 属性错误故障排除:“ResultSet”对象没有属性“findAll”

    我正在尝试解析http www ted com talks http www ted com talks所有演讲名称的页面 使用 BeautifulSoup 这是我所拥有的 import urllib2 from BeautifulSoup
  • 使用 PHP 和 XPath 获取与正则表达式匹配的 href

    我有一个包含多个超链接的页面 我想要得到的格式如下 div a href 123 text2 a div div a href 345 text1 a a href 678 text2 a div 我想提取三个 href 123 345 和
  • 停止 jQuery Mobile 滑动事件双冒泡

    我在 iPad Safari 上安装了 jQuery Mobile 由于某种原因 触摸滑动事件会触发两次 就在本周 人们在过去的一年中报告了同样的问题 但我找不到如何在不修改 jQuery Mobile 的情况下修复双重事件的解释 我不想这
  • 通过坐标提取PDF文本

    我想知道 Microsoft NET 中是否有一些 PDF 库能够通过给出坐标来提取文本 例如 在伪代码中 PdfReader reader new PdfReader reader Load file pdf Top bottom lef
  • 如何通过WebApi上传图片

    我如何通过上传图像文件ASP NET Web API 我在文件模式下有一个输入标签 并将其发布到 API 如何将其保存到服务器文件夹 我尝试了这段代码 但它不起作用 private void UploadWholeFile HttpRequ
  • WCF Restful返回HttpResponseMessage想要在设置内容时进行协商

    我有一个 WCF Restful 服务 我想要返回 HttpResponseMessage 的方法 因为它看起来是结构化的 而不仅仅是返回数据或异常或其他可能到达那里的东西 我假设这是正确的 如果不让我知道 但我的问题是当我尝试设置时会发生
  • 使用空花括号初始化

    第一次尝试 一切正常 class Base public Base std cout lt lt default ctor n Base b Base b one 另一种实现方式 添加explicit class Base public e