为什么包含 const 数据成员的类不存在默认构造函数

2024-06-22

为什么编译器没有为包含常量数据成员的类添加默认构造函数。 请参阅下面的代码,因为我已经声明了常量数据成员“a”,并且在尝试为类“ClassA”创建对象时,它说没有可用的适当的默认构造函数。请帮忙。

#include "stdafx.h"
#include <iostream>
using namespace std;

class ClassA
{
    private:
  const int a;
    public :
  void print()
  {
      cout << "hello world" << endl;
  }
};

int main()
{
  ClassA obj;
  obj.print();
  return 0;
}

C++03 规则在 12.6.2/4 [class.base.init] 中指定。如果类的非静态成员未在构造函数的成员初始值设定项列表中提及,那么如果它是const合格的它必须是具有用户声明的构造函数的非 POD 类类型,否则程序将格式错误。隐式定义的构造函数是用空成员初始值设定项列表(和空主体)定义的,因此在这种情况下,导致隐式声明的默认构造函数被隐式定义,也会导致程序格式错误。

C++11 规则相当于同样的事情。未在成员初始值设定项列表中指定的非静态数据成员是默认初始化。在 C++11 8.5/6 [dcl.init] 中,“[...] 如果程序调用 const 限定类型的对象的默认初始化T, T应是具有用户提供的默认构造函数的类类型。”在本例中归结为相同的规则。

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

为什么包含 const 数据成员的类不存在默认构造函数 的相关文章

随机推荐

  • EVP_get_cipherbyname 始终返回 null

    我打电话时遇到问题EVP get cipherbyname在 macOS 上 const char cipher str aes 256 cbc const evp cipher st cipher1 EVP aes 256 cbc con
  • 显示我的 C# Windows 窗体时关闭“拖动时显示窗口内容”设置

    有一个窗口显示设置称为 拖动时显示窗口内容 http www thewindowsclub com disable show windows contents while dragging http www thewindowsclub c
  • 如何触发预定的 Spring Batch 作业?

    我希望能够使用 REST 控制器启动我的作业 然后当作业启动时 它应该按计划运行 直到我再次使用 REST 停止它 这是我的控制器 RestController public class LauncherController Autowir
  • Jms 消息仅确认,直到消息确认为止

    如何确保消息确认仅删除在 jms 代理中调用确认的消息之前的消息 目前我有一个系统 它从 jms 队列中消费并部分处理它 稍后 一批这些消息将由不同的线程保存 我现在需要确认消息 但问题是我必须停止使用消息 否则确认先前收到的消息也将确认收
  • ActiveX,安装不起作用

    我想创建并部署一个 ActiveX 插件 非常小的东西 我只想显示一个消息框 我为它创建了一个库项目并将其编译为 DLL 当我通过命令行注册 dll 时 该插件可以工作 regasm 在一台机器上 所以我现在需要创建一个安装程序 将其放入
  • iOS 自动释放池块

    当我开始阅读苹果关于内存管理的文档时自动释放池块有件事让我思考 Any object sent an autorelease message inside the autorelease pool block is released at
  • PHP 使用 Fsockopen 发布数据

    我正在尝试使用 fsockopen 发布数据 然后返回结果 这是我当前的代码
  • 猫和印刷有什么区别?

    cat and print两者似乎都在 R 中提供了 打印 功能 x lt Hello world n cat x Hello world print x 1 Hello world n 我的印象是cat最类似于典型的 打印 功能 我什么时
  • 通过另一个函数访问一个函数的返回值

    总的来说 我对编程还很陌生 刚刚开始真正接触Python 我正在做一个猜数字项目 import random def main main function print Welcome to the number guesser game r
  • 创建一个控件似乎打破了 JFX8 上的透明阶段

    上面的程序应该创建一个带有一些文本的透明舞台 但舞台看起来不透明 public class Test extends Application Override public void start Stage primaryStage new
  • 如何查找数组中存储的字符串中的数字之和

    我已经弄清楚如何从单个字符串计算数字的值 作为示例 var sum 13 2 10 7 3 split reduce function x y return parseInt x parseInt y Value of 35 我有兴趣找到数
  • 不区分大小写的列表

    我需要一个不区分大小写的列表或集合类型 字符串 创建一个最简单的方法是什么 您可以指定要在字典的键上获得的比较类型 但我找不到列表的类似内容 假设您使用的是 NET 3 5 您可以使用 var strings new HashSet
  • 如何向 CRichEditCtrl 添加 Unicode 支持?

    我的应用程序曾经使用 MFC CEdit 控件 并且我们对宽字符 Unicode 字符串没有任何问题 切换到CRichEditCtrl后 似乎不再支持Unicode 汉字变成了 等等 我读过 CRichEditCtrl 在底层使用 Rich
  • 如何在 PHP 客户端和 C 守护程序服务器之间进行 IPC?

    感谢您查看这个问题 的背景我有几台机器可以在很短的时间内连续生成多个 最多 300 个 PHP 控制台脚本 这些脚本运行速度很快 不到一秒 然后退出 所有这些脚本都需要对大型文件进行只读访问trie http en wikipedia or
  • Django manage.py runserver 优雅重载

    我正在开发一个 Django 项目 它集成了网络摄像头和 OpenCV 对于网络摄像头访问 我使用以下代码 如果我使用的话 网络摄像头可以被释放Ctrl C结束正在运行的服务器 但如果服务器在代码更改后重新加载 则网络摄像头无法正确释放 因
  • 如何在 Laravel 5 中设置基本路径

    I moved Laravel 公共文件夹 to the 根文件夹 然后我搬家了Laravel to 它自己的文件夹 所以我可以在共享主机上使用 Laravel 它看起来像这样 2015 08 04 18 13
  • 显示 jQuery 验证摘要和单独的错误消息

    我在 ASP net MVC 中使用 jQuery 验证 除了控件之外 我想显示验证摘要以及单独的错误消息 我一次可以做其中一个 因此 了解如何同时显示两者将非常有帮助 我假设您正在寻找仅 JQuery 的解决方案 我不知道 ASP net
  • 如何在 Java 字符串中用 \u 替换 \\u

    我有一个格式的字符串 aaa u2022bbb u2014ccc 我想显示这两个特殊字符 但为了能够做到这一点 我必须首先将字符串转换为以下格式 aaa u2022bbb u2014ccc 我尝试编写这个 但它给出了编译错误 String
  • 如何跨函数将函数参数粘合到 dplyr 中的 .names?

    我正在尝试命名一个的输出across使用两者的函数 col 和函数参数之一 library tidyverse mean by lt function data by var prefix avg data gt group by by g
  • 为什么包含 const 数据成员的类不存在默认构造函数

    为什么编译器没有为包含常量数据成员的类添加默认构造函数 请参阅下面的代码 因为我已经声明了常量数据成员 a 并且在尝试为类 ClassA 创建对象时 它说没有可用的适当的默认构造函数 请帮忙 include stdafx h include