C++:成员指针已初始化?

2024-01-23

代码示例应该解释一下:

class A
{
    B* pB;
    C* pC;
    D d;

    public : 
    A(int i, int j) : d(j)
    {
        pC = new C(i, "abc");
    } // note pB is not initialised, e.g. pB(NULL)

    ...
};

显然 pB 应该显式初始化为 NULL 以保证安全(且清晰),但是,就目前情况而言,A 构建后 pB 的值为多少?它是否默认初始化(为零?)或未初始化(即不确定以及内存中的任何内容)。我意识到 C++ 中的初始化有相当多的规则。

我认为它没有默认初始化;在 Visual Studio 中以调试模式运行时,它已将 pB 设置为指向 0xcdcdcdcd - 这意味着内存已被新建(在堆上)但未初始化。然而在释放模式下,pB 始终指向 NULL。这是否只是偶然,因此不值得依赖?或者这些编译器是否为我初始化它(即使它不在标准中)?当在 Solaris 上使用 Sun 的编译器进行编译时,它似乎也是 NULL。

我真的在寻找对标准的具体参考,以某种方式说。

Thanks.


以下是标准中的相关段落:

12.6.2 初始化基类和成员 [class.base.init]

4 如果给定的非静态数据成员或 基类不是由内存命名的
初始化程序 ID 在 内存初始化列表,然后

--如果实体是非静态数据 成员(可能符合简历资格) 类类型(或其数组)或基类,以及实体类 是一个非 POD 类,该实体是默认初始化的(dcl.init)。 如果实体是 const 限定类型的非静态数据成员, 实体类应具有用户声明的默认构造函数。

--否则,该实体不是 已初始化。如果实体是 const 限定类型或引用类型,或者(可能是 cv 限定类型) 字段)POD 类类型(或其数组)包含(直接或 间接)const 限定类型的成员,程序是 患病的- 形成。

调用构造函数后 X 级已完成,如果成员

X 中既没有指定 构造函数的内存初始化器,也不是
默认初始化,也没有初始化 在执行主体期间
构造函数,成员有 不确定的值。

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

C++:成员指针已初始化? 的相关文章

  • 模板类包装任意类型/非类型模板类

    假设我有一个模板类base和一个班级wrapper其中包含一个实例化成员base 我想定义班级wrapper这样它依赖于模板参数包 该参数包只是 传递 给实例化成员base 例如 考虑下面的代码 它工作得很好 include
  • C#中如何检测字符串是否为货币

    通常当我需要转换时currency string 如 1200 55 z 或 1 249 到十进制值我这样做 if currencyString Contains z decimal value Decimal Parse dataToCh
  • .NET 可移植类库中的 .ToShortDateString 发生了什么

    我想知道为什么没有 ToShortDateString在 NET 可移植类库中 我有 2 个项目 Silverlight 和常规 NET 类库 使用相同的代码 并且代码涉及调用 ToShortDateString on a DateTime
  • 在 Windows Phone 上启动 pdf 文件时出现 System.Runtime.InteropServices.COMException

    我正在尝试使用我之前在另一个应用程序上使用过的以下工作代码打开 pdf 文件 但这一次 当流程到达此行时 我收到 System Runtime InteropServices COMException Windows System Laun
  • 使用 VSTO 更改 Outlook 设置

    我刚刚花了大约 4 个小时试图弄清楚如何以编程方式检索 设置 Microsoft Outlook 2010 的 Outlook 设置 我所说的 设置 是指文件 选项 邮件下的设置 我想做的是检索用户设置的设置列表 自动化我们每天需要在某些消
  • 如何检测斑点并将其裁剪成 png 文件?

    我一直在开发一个网络应用程序 我陷入了一个有问题的问题 我会尝试解释我想要做什么 在这里您看到第一个大图像 其中有绿色形状 我想要做的是将这些形状裁剪成不同的 png 文件 并使它们的背景透明 就像大图像下面的示例裁剪图像一样 第一张图像将
  • 推送 Lua 表

    我已经创建了一个Lua表C 但我不知道如何将该表推入堆栈顶部 以便我可以将其传递给 Lua 函数 有谁知道如何做到这一点 这是我当前的代码 lua createtable state libraries size 0 int table i
  • 如何在不使用reinterpret_cast的情况下使用dlsym()加载函数?

    我正在尝试使用 clang tidy 来强制执行 C 核心指南 虽然它确实有很多有效点 但有一件事我无法真正解决 dlsym 返回一个void 我需要以某种方式将其转换为正确的函数指针 为此 我使用reinterpret cast 由于指南
  • for 循环 - 没有效果的语句

    由于某种原因 我收到错误 statement with no effect关于这个声明 for j idx j lt iter j increment printf from loop idx i int idx punc ctxt j 你
  • _mm_max_ss 在 clang 和 gcc 之间有不同的行为

    我正在尝试使用 clang 和 gcc 交叉编译一个项目 但在使用时发现一些奇怪的差异 mm max ss e g m128 a mm set ss std numeric limits
  • 抽象类和接口之间的区别[重复]

    这个问题在这里已经有答案了 可能的重复 接口与基类 https stackoverflow com questions 56867 interface vs base class 我不明白抽象类和接口之间的区别 我什么时候需要使用哪种字体
  • 在 C# 中赋值后如何保留有关对象的信息?

    我一直在问我的想法可能是解决方案 https stackoverflow com questions 35254467 is it possible in c sharp to get the attributes attached to
  • 使用 Linq 进行异步Where过滤

    我有一个List通过填充的元素async调用 WebService 没问题 我需要过滤该列表以便在应用程序视图上显示某些内容 我试过这个 List
  • 如何在 C++ 中使用 PI 常数

    我想在一些 C 程序中使用 PI 常数和三角函数 我得到三角函数include
  • 如何使用 Clang 查找内存泄漏

    我在我的机器 ubuntu 中安装了 Clang 以便发现我的 C 代码中的内存泄漏 我编写了一个示例代码来检查它的工作情况 如下所示 File hello c for leak detection include
  • 用 C# 编写的带有点击移动的 WPF 游戏

    我试图将标签网格移动到鼠标的位置 就像冒险游戏中的移动一样 理想情况下 我会在途中删除并重新绘制它们 但是 现在我只想弄清楚如何将 int 转换为厚度或 pointtoscreen 到目前为止我有 player XMove int Mous
  • 改进C++逐行读取文件的能力?

    我正在解析大约 500GB 的日志文件 我的 C 版本需要 3 5 分钟 我的 Go 版本需要 1 2 分钟 我正在使用 C 的流来流式传输文件的每一行以进行解析 include
  • 删除对象时指针自动指向空

    假设我有一个对象和其他几个不同类类型的对象中的 10 个指向它的指针 如果对象被删除 这些指针必须设置为空 通常我会将对象的类与具有指向它的指针的类互连 以便它可以通知它们它正在被删除 并且它们可以将它们的指针设置为空 但这也有一个负担 即
  • 如何使用 g++ 在 c++ 20 中使用模块?

    我读了这个链接https gcc gnu org wiki cxx modules https gcc gnu org wiki cxx modules并尝试从该网站复制以下示例 我已经知道这个编译器部分支持模块系统 注 我用的是windo
  • 如何使复选框不可选择?

    我想知道你是怎么做的CheckBox在c 中无法选择 我认为这会是类似 SetSelectable false 之类的东西 但我似乎看不到该方法 I found CanSelect但这似乎是只读属性 您可以设置自动检查 http msdn

随机推荐

  • 如何使用 Gatsby JS 处理国际化/本地化?

    我想在世界各地的不同当地人中发布我的静态网站并提供本地化内容 如何实现这一目标 我最近添加了一个默认的 Gatsby starter 具有多语言 url 路由和浏览器语言检测功能 demo https gatsby starter defa
  • Keras Conv2D 和输入通道

    Keras 层文档指定了卷积层的输入和输出大小 https keras io layers 卷积 https keras io layers convolutional 输入形状 samples channels rows cols 输出形
  • 如何将多个报告附加在一起?

    我有许多报告需要单独运行 也需要作为一组运行 我已经创建了这些报告 并希望我可以创建一个表单 在其中可以将 report1 report2 report3 等附加在一起 而无需创建不同的报告并制作所有这些报告的子报告 这可能吗 编辑 我在
  • Akka 在 Actor 之外进行日志记录

    我有一个 Akka Actor 打电话给MyObject foo MyObject不是演员 如何设置登录 使用 Actor 就很简单 因为我可以混合 Actor Logging 在 MyObject 中 我无权访问 context syst
  • 复制data.frame的每一行并指定每行的复制次数?

    我在 R 中编程 遇到以下问题 我有一个数据字符串 jb 它很长 这是它的一个简单版本 jb a b frequency jb expanded a b 5 3 2 5 3 5 7 1 5 3 9 1 40 5 7 12 4 5 9
  • 如何使用 YAML 配置文件使用对象参数实例化新对象?

    我试图使用配置文件来允许用户选择实现某些抽象类或接口的具体聚类算法 每种算法的先决条件输入可能略有不同 一个小的概念示例 KMedoids只需要拥有k由用户设置 SpectralClustering还需要k但还需要其他一些东西 例如Enum
  • 当绑定属性声明为接口与类类型时,WPF 绑定行为不同吗?

    这始于我认为与我的实施有关的奇怪行为ToString 我问了这个问题 当 ToString 具有协作对象时 为什么 WPF 数据绑定不显示文本 https stackoverflow com questions 2916068 why wo
  • 在CSS中创建一个自适应四边形梯形

    是否可以在 css 中创建图像形状 上周我在谷歌上搜索的次数比我愿意承认的还要多 但没有找到解决方案 我已经能够半复制它 但还没有解决所有要求 有边界 反应灵敏 适应内容高度 以厘米为单位 所以我无法控制文本量 在 IE9 中工作 它需要适
  • 如何更改 Eclipse 运行配置的工作目录?

    我有一个 Eclipse 运行配置 我想为其设置工作目录 我该怎么做呢 我浏览了运行配置的不同选项卡 包括 环境 选项卡 但没有看到任何明显的东西 这是开普勒 SR1 上的 参数选项卡
  • Apache CXF REST 分段上传,编码异常

    我想使用多部分表单数据上传文件 但 URLDecoder 出现问题 服务代码如下 POST Path document Consumes MediaType MULTIPART FORM DATA public Response store
  • 爆炸不适用于字符串内的多个逗号[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我尝试在这里和谷歌中找到答案 但没有
  • 如何解决 IDLE 中的 ModuleNotFound 错误?

    我使用的是ubuntu 18 04 我首先从版本为 3 7 0 的终端安装了 Python 和 anaconda 并且还启动了 Jupyter Notebook 和 Spyder 然后我安装了 IDLE 其版本为 3 6 6 并且我当前正在
  • Cython 并行 prange - 线程局部性?

    我正在使用 prange 迭代这样的列表 from cython parallel import prange threadid cdef int tid cdef CythonElement tEl cdef int a b c elLi
  • tabindex 给出了它的焦点,但是在回车键上输入它不起作用

    当我用鼠标单击搜索图标时 它工作正常 但是当我使用选项卡并且焦点转到图标时 但当我输入 ENTER 关键字时 它不起作用 div class mobile header icon i class search i div 紧迫enter不触
  • Carrierwave:如果尺寸大于则缩放图像(有条件创建版本)

    仅当图像大于版本大小时 才可以使用载波创建版本 例如拇指 吗 Example version thumb if gt is thumbnable do process resize to fit gt 32 nil end protecte
  • 类型注释被推断的表达式类型覆盖

    在 Scala 编程语言中 假设我将使用更广泛的类型注释表达式并提供一个狭窄的值 我的程序将被拒绝 scala gt def x A A 8
  • 使用 HTML 和 CSS 剪辑图像

    我想在 144px x 144px div 元素中显示图像 图像总是大于 144px 所以我想缩放它们 我的意思是最小的一侧将接触 div 的边缘 从另一侧 与信箱相反 切掉一点 我怎样才能做到这一点并让它在 IE 等旧版浏览器上也能工作
  • 在 NodeJS Lambda 函数中列出 AWS.CognitoIdentityServiceProvider.listUsers 中的用户及其组?

    因此 我需要在客户端的自定义管理屏幕中显示用户列表及其各个组 我正在返回结果AWS CognitoIdentityServiceProvider listUsers在 Lambda 函数中 这可以很好地列出用户 但我不确定为每个用户获取组并
  • 按行名称连接多个表[重复]

    这个问题在这里已经有答案了 我想按行名称合并多个表 这些表的行数不同 并且它们具有唯一行和共享行 这些行都应该出现在输出中 如果可能的话我想解决这个问题awk 但我也对其他解决方案感到满意 表1 tab a 5 b 5 d 9 表2 tab
  • C++:成员指针已初始化?

    代码示例应该解释一下 class A B pB C pC D d public A int i int j d j pC new C i abc note pB is not initialised e g pB NULL 显然 pB 应该