constructor相关内容

如何解释构造函数中的返回语句?

据我所知,构造函数什么都不返回,甚至没有返回, 还有 return ; 在任何方法中都意味着返回 void . 所以在我的程序中 公共类 returnTest {公共静态无效主(字符串 [] args){returnTest obj = new returnTest();System.out.println("这里1");}公共返回测试(){System.out.println( ..
发布时间:2021-12-30 15:40:35 Java开发

与硬件接口的 C++ 构造函数应该真正起作用吗?

可能的重复: 应该在构造函数中完成多少工作? 我一直在苦苦思索我脑海中的一些建议,但我不记得理由了. 我似乎记得在某个时候阅读了一些建议(不记得来源)C++ 构造函数不应该做真正的工作.相反,他们应该只初始化变量.建议继续解释真正的工作应该在某种 init() 方法中完成,在实例创建后单独调用. 情况是我有一个代表硬件设备的类.对我来说,构造函数调用查询设备的例程以构建描述设备 ..
发布时间:2021-12-30 15:40:28 C/C++开发

我应该使用 std::string 的右值编写构造函数吗?

我有一个简单的类: class X{std::string S;X (const std::string& s) : S(s) { }}; 我最近阅读了一些关于右值的文章,我一直在想,是否应该使用右值为 X 编写构造函数,这样我就可以检测 的临时对象std::string 类型? 我认为它应该是这样的: X (std::string&&s) : S(s) { } 据我所知,在支持 C ..
发布时间:2021-12-30 15:40:18 C/C++开发

继承构造函数在 C++ 中有多大用处?

当我参加 C++ 标准委员会会议时,他们正在讨论放弃 继承构造函数,因为还没有编译器供应商实现它(感觉用户还没有要求它). 让我快速提醒大家什么是继承构造函数: 结构体B{B(int);};结构 D : B{使用 B::B;}; 一些供应商建议使用 r 值引用和可变参数模板(完美的转发构造函数),在继承类中提供转发构造函数可以避免继承构造函数. 例如: 结构 D : B{模板D( ..
发布时间:2021-12-30 15:39:52 C/C++开发

作为类成员初始化的引用

我想通过将这样的引用作为参数传递给构造函数来初始化一个类的属性,该类保存对另一个类的引用.但是我收到一个错误: “'TaxSquare::bank' 必须在构造函数基类/成员初始化列表中初始化".以下类的代码有什么问题? #ifndef TAXSQUARE_H#define TAXSQUARE_H#include "Square.h"类银行;TaxSquare 类:公共广场{上市:TaxS ..
发布时间:2021-12-30 15:39:41 C/C++开发

创建派生类对象时将参数传递给基类构造函数

考虑两个类 A 和 B A 类{上市:A(int);~A();};B类:公共A{上市:B(int);~B();};int main(){A* aobj;B* bobj = 新 bobj(5);} 现在B类继承了A. 我想创建一个B的对象.我知道创建派生类对象也会调用基类构造函数,但这是没有任何参数的默认构造函数. 我想要的是 B 接受一个参数(比如 5),并将它传递给 A 的构造函 ..
发布时间:2021-12-30 15:39:35 C/C++开发

为什么显式允许默认构造函数和具有 2 个或更多(非默认)参数的构造函数?

我知道带有一个(非默认)参数的构造函数就像隐式转换器一样,从参数类型转换为类类型.但是,explicit 可用于限定任何构造函数,无参数(默认构造函数)或具有 2 个或更多(非默认)参数的构造函数. 为什么在这些构造函数上允许显式?是否有任何示例说明这有助于防止某种隐式转换? 解决方案 一个原因当然是因为它没有伤害. 需要它的一个原因是,如果您有第一个参数的默认参数.构造函数变 ..
发布时间:2021-12-30 15:39:03 C/C++开发

对构造函数进行单元测试很重要吗?

我应该对构造函数进行单元测试吗?假设我有一个这样的构造函数: IMapinfoWrapper 包装器;公共系统信息(IMapinfoWrapper mapinfoWrapper){this.wrapper = mapinfoWrapper;} 我需要为此构造函数编写单元测试吗?我没有任何用于包装器变量的 getter,因此我不需要对其进行测试. 解决方案 单元测试是关于测试对象的公共状 ..
发布时间:2021-12-30 15:38:52 C#/.NET

为什么我们不能在声明时初始化类成员?

我想知道为什么我们不能在成员声明时初始化成员. class Foo{整数栏 = 42;//这是无效的}; 相当于使用构造函数初始化列表. class Foo{国际酒吧;上市:Foo() : 酒吧 (42) {}} 我个人的理解是,上面的例子更具表现力和意图.此外,这是一个较短的语法.而且我没有看到任何与其他语言元素混淆的可能性. 官方对此有澄清吗? 解决方案 在 C++11 ..
发布时间:2021-12-30 15:38:34 C/C++开发

在头文件与实现 (.cpp) 文件中定义构造函数

我可以在类 .h 文件或实现文件 .cpp 中定义类构造函数的主体.就特定项目中的编译器而言,这两种风格可能是相同的(项目对我来说意味着 DLL).这同样适用于任何成员函数:它们可以在头文件中定义,也可以在头文件中声明,然后在 cpp 文件中定义. 然而,我发现如果我需要在不同的项目中包含这样的类头文件(意味着最终使用头文件的代码最终在不同的 DLL 中)然后有头文件中的实际实现在编译时引起 ..
发布时间:2021-12-30 15:38:24 C/C++开发

Java 类如何没有无参数构造函数?

Oracle Java 教程站点中有一段让我感到困惑: 所有班级至少有一个构造函数.如果一个班级没有显式声明任何,Java编译器自动提供一个无参数构造函数,称为默认构造函数.这个默认构造函数调用父类的无参数构造函数,或 Object如果类没有其他构造函数父母.如果家长没有构造函数(对象确实有一个),编译器将拒绝该程序. 如果所有对象直接或间接从 Object 继承,怎么可能引起所说的编 ..
发布时间:2021-12-30 15:38:11 Java开发

构造函数覆盖可能吗?

我所知道的是,编译器在字节码中编写了一个默认的无参数构造函数.但是如果我们自己编写它,该构造函数将被自动调用.这种现象是构造函数覆盖吗? 解决方案 您所描述的内容并不重要.如果不指定默认构造函数,则编译器将创建一个默认构造函数.如果它是一个子类,它将调用默认的父构造函数(super()),它还将所有实例变量初始化为由类型的默认值确定的默认值(0 表示数字类型,false 表示布尔值,或 n ..
发布时间:2021-12-30 15:37:59 Java开发

使用 C++ 基类构造函数?

在使用模板时,我遇到了需要使基类构造函数可从继承的类访问以创建对象以减少复制/粘贴操作.我想通过 using 关键字以与函数案例相同的方式来做到这一点,但那行不通. A 类{上市:A(int val) {}};B类:公共A{};C类:公共A{上市:C(const string &val) {}};D类:公共A{上市:D(const string &val) {}使用 A::A;//g++ 错误: ..
发布时间:2021-12-30 15:37:49 C/C++开发

Javascript:覆盖函数的原型 - 不好的做法?

因为当我们声明一个函数时,我们将其原型的构造函数属性指向函数本身,所以像这样覆盖函数的原型是一种不好的做法: function LolCat() {}//此时 LolCat.prototype.constructor === LolCatLolCat.prototype = {你好:函数(){警报('喵!');}//其他方法声明也放在这里};//但现在 LolCat.prototype.cons ..
发布时间:2021-12-30 15:37:41 前端开发

C中的默认构造函数

有没有办法为使用结构定义的 C 用户类型拥有某种默认构造函数(如 C++ 构造函数)? 我已经有一个像快速初始化程序一样工作的宏(就像 pthread_mutex 的那个),但我想知道你是否可以有任何(或所有)结构的字段填充在声明中. 例如,以 pthread_mutex 为例,我希望 pthread_mutex_t my_mutex; 具有与 相同的效果 pthread_mu ..
发布时间:2021-12-30 15:37:33 其他开发

我可以在 C# 中从同一类的另一个构造函数调用重载的构造函数吗?

我可以在 C# 中从同一个类的另一个构造函数调用重载的构造函数吗? 解决方案 不,你不能那样做,你可以在 C# 中从另一个构造函数调用构造函数的唯一地方是紧跟在构造函数之后的“:"之后.例如 class foo{公共 foo(){}公共 foo(string s) { }公共 foo (字符串 s1, 字符串 s2) : this(s1) {....}} ..
发布时间:2021-12-30 15:37:20 C#/.NET