问题标签 [member-initialization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
39 浏览

c++ - 直接从另一个类实例化时成员整数发生变化

假设我有两个类,A 和 B。A 有一个整数,它从其构造函数显示在控制台中。它还有一个 B 的成员对象。B 像 A 一样显示一个整数,但是当 A 创建它时它从 A 获取它的整数。整数必须直接传递给 B 的构造函数,因为它是一个 const 值。

因此,当 A 将自己的整数传递给 B 时,我希望 A 和 B 在控制台 (1) 中显示相同的数字。相反,当 B 的构造函数打印出它的整数时,它显示 -858993460。这是为什么? 当 A 实例化 B 对象时,为 B 的 const int 传递一个整数,为什么整数会改变值?

主文件

溴化氢

0 投票
2 回答
966 浏览

c++ - C++ 类的 Qt 类数据成员是否应该在使用前初始化?

许多文章和书籍中提出了许多 C++ 编程最佳实践。以下是与 C++ 类数据成员相关的子集:

  1. 确保在使用对象之前对其进行初始化。
  2. 确保所有构造函数都初始化对象中的所有内容。
  3. 在每个构造函数的初始化器列表中初始化数据成员通常比在其主体中更有效。
  4. 在初始化列表中,数据成员应该按照它们被声明的顺序列出。

考虑以下具有 Qt 类类型数据成员的类:

通过应用上述最佳实践,构造函数代码如下所示:

但是,我的印象是并非所有的 Qt 类数据成员都需要初始化。但我不是 100% 确定这一点。一些开发人员认为,通过将所有数据成员都放在初始化列表中,我们可以避免忽略一些应该初始化的重要数据成员的初始化。但是,如果这是一个真正的问题,我宁愿为每个不需要初始化的数据成员添加注释行,例如:

总而言之,我想知道什么时候应该初始化 Qt 类数据成员,什么时候不需要初始化,以及为什么。谢谢!

0 投票
2 回答
5579 浏览

c++ - 嵌套类。错误:预期的参数声明符 - 用于内部类实例

我开始学习 C++ 中的嵌套类,我尝试了一个粘贴在这里的快速代码,以了解嵌套类是如何工作的。但是编译以一些我无法弄清楚的错误结束。

文件:check.cpp

我在编译时遇到的错误g++ -Wall -std=c++11 -o check.out check.cpp

我需要这个错误背后的一个很好的解释以及如何克服这个错误。

0 投票
1 回答
62 浏览

c++ - 循环依赖与可以从另一个初始化的类

好吧,这个问题的正确标题应该是“类的循环依赖,实例可以从另一个初始化”。

我有两个类(带有整数数据字段的 Index3i 和带有浮点数据字段的 Index3f)意味着可以“转换”到另一个类,反之亦然:

文件“Index3i.h”:

文件“Index3f.h”:

我需要Index3i类对象能够初始化并转换为Index3f类对象,反之亦然。另外,我只想保留这些类的标题

好吧,如果我尝试取消注释已注释的构造函数、方法和包含,则会产生循环依赖问题。另一种可能的解决方案是实现一些转换函数并将它们放在第三个包含文件中,如“IndexConvert.h”左右。

但也许还有其他方法?你能建议我为这个案子提供一个合适的解决方案吗?

0 投票
2 回答
80 浏览

ios - 成员初始化器如何在 Structs 中工作?(在斯威夫特)

由于我是一个完整的初学者,我什至不知道我问的问题是否正确。但我无法理解为什么for 循环中的“用户(名称:”约翰 ...) “部分代码有效

}

但这不是

}

为了理解 CASE1 是如何工作的,我运行了这个代码的一个更简单的版本,即 CASE2。即使在两种情况下都发生完全相同的事情,[关于用户(..arguments..)]我在第二种情况下收到错误“预期声明”。保罗爵士(斯坦福 cs193p)说这是一个相当简单的数据库,但我已经尝试解决这个问题超过 6 个小时。

0 投票
2 回答
1305 浏览

c++ - 如何在成员初始化列表中传递类成员的指针?

我有一个名为 HighWaterDetector 的类:

与构造函数:

我正在尝试在 HighWaterDetector 的成员初始化列表中初始化 Output 的实例,但 Output 要求您将指针传递给 NCD2Relay 的实例,该实例也是 HighWaterDetector 类的成员。我的程序在输出构造函数内崩溃。这是错误的做法吗?我究竟做错了什么?

输出类:

0 投票
3 回答
7113 浏览

c++ - 如何在构造函数中初始化对象数组?

我有一个名为 HighWaterDetector 的课程:

如何在 HighWaterDetector 的构造函数中初始化“输出”对象数组?

输出类:

输出构造函数如下所示:

我是 C++ 新手,不确定是否可以使 HighWaterDetector 构造函数看起来像:

出现编译错误:

0 投票
2 回答
296 浏览

c++ - 初始化联合的多个非静态数据成员

考虑以下根据标准格式错误的程序

C++11 标准N3376第 12 条第 6.2.8 节说(强调我的):

尝试初始化联合的多个非静态数据成员会导致程序格式错误

但是所有流行的 3 种编译器(g++、clang++、MSVC++)都可以编译上述程序,而不会产生任何编译器错误或警告。我认为编译器有必要在这个程序中给出诊断并且程序应该在编译中失败。

在此处查看在 g++ 上测试的现场演示。

在此处查看在 clang++ 上测试的现场演示。

所有的编译器都按照标准破坏了吗?这是编译器错误吗?

0 投票
1 回答
147 浏览

c++ - unique_ptr 无法初始化

我在一个项目中有以下代码,它给了我一个错误 C2059,语法错误“新”,该unique_ptr行是错误的。

这里发生了什么?

0 投票
2 回答
340 浏览

c++ - 成员初始化列表与赋值/复制构造函数(在 boost 截止时间_timer 中)

我有以下类声明:

下面的类构造函数A工作正常:

但是当我写这个时:

我收到以下错误:

错误:不匹配调用 '(boost::asio::deadline_timer {aka boost::asio::basic_deadline_timer}) (boost::asio::io_service&)

boost::asio::deadline_timer也许是因为未定义复制构造函数。但是在成员初始化列表的情况下会发生什么?它不使用复制构造函数吗?

关于成员初始化列表中使用的机制与我们在类构造函数中使用赋值/复制构造函数时使用的机制相比,我的问题可能更笼统。