constructor相关内容
我知道在 C# 中你现在可以这样做: var a = new MyObject{属性 1 = 1,属性 2 = 2}; PHP 中也有类似的东西吗?或者我应该通过构造函数还是通过多个语句来完成; $a = new MyObject(1, 2);$a = new MyObject();$a->property1 = 1;$a->property2 = 2; 如果有可能,但每个人都认为这是一个
..
我有一个至少有 4 个变量的类,并且我为该类创建了一个构造函数,以便我可以使用它来初始化它 MyClass testobj = new MyClass(1234,56789,"test text", "something else", "foo"); 工作正常. 然后我有一个数组,我需要在一个循环中解析,所以我想将一些静态数据放入这个数组中. 我的做法是: MyClass[] t
..
我一直在阅读有关 RAII 和单阶段与两阶段构建/初始化的相关信息.无论出于何种原因,直到最近我都处于两阶段阵营中,因为在某些时候我一定听说过在构造函数中执行容易出错的操作是不好的.但是,基于我在 SO 和其他文章中阅读的问题,我认为我现在确信单相更可取. 我的问题是:为什么 Objective C 几乎只对不方便的构造函数使用两阶段方法(alloc/init)?语言中是否有任何具体原因,还
..
我想知道初始化静态成员内联有什么区别: 类 Foo{私人静态酒吧 bar_ = new Bar();} 或在静态构造函数中对其进行初始化,如下所示: 类 Foo{静态 Foo(){bar_ = 新酒吧();}私人静态酒吧 bar_;} 解决方案 如果你的类型中有一个静态构造函数,它会因为 beforefieldinit 标志不再被应用. 它也会影响初始化顺序 - 变量初始化器都在静
..
标准和 C++ 书说,类类型成员的默认构造函数由隐式生成的默认构造函数调用,但内置类型未初始化.但是,在这个测试程序中,在堆中分配对象或使用临时对象时,我得到了意想不到的结果: #include结构容器{诠释n;};主函数(){容器 c;std::cout
..
我有一个保存数据的容器类.创建容器时,有不同的方法来传递数据. 传递一个包含数据的文件 直接通过参数传递数据 不传递数据;只需创建一个空容器 在 Java 中,我将创建三个构造函数.如果在 Python 中可行的话,它会是这样的: 类容器:def __init__(self):self.timestamp = 0自我数据 = []self.metadata = {}def __i
..
因此,C++ 标准要求类成员按照它们在类中声明的顺序进行初始化,而不是按照它们在任何构造函数的初始化列表中的顺序进行初始化.但是,这并不意味着评估这些初始化的参数的顺序.我正在使用一个经常传递对序列化对象的引用的系统,并且想知道我是否可以确保以正确的顺序从中读取位,而与这些位写入对象字段的顺序无关. struct Foo {诠释一个;双乙;//我希望能够做到这一点Foo(SerObj &s):
..
在下面的代码中,我希望在调用 Class 构造函数时将数组定义为大小为 x 的数组.我该怎么做? class 类{上市:整数数组[];类(int x):???{ }} 解决方案 你不能用在编译时无法计算的非常量维度来初始化数组的大小(至少在当前的 C++ 标准中不是这样), AFAIK). 我建议使用 std::vector 而不是数组.它为大多数操作提供了类似数组的语法.
..
加载表单时,代码需要执行诸如设置数据网格、组合框、设置标题等操作.我倾向于始终使用加载事件而不是新的(构造函数).是否有针对哪些活动最适合哪些活动的指南? 解决方案 对 InitializeComponent 的调用会自动插入到表单/页面的构造函数中.InitializeComponent 是自动生成的方法, 在您的 winform/XAML 页面上创建各种 UI 元素 使用存储在
..
类的构造函数是否有更简单的方法来指定内置类型的所有成员都应该进行零初始化? 此代码片段出现在另一篇文章中: 结构金钱{双倍数量P,数量G,总变化;int 二十,十,五,一,变化;int 季度,一角钱,镍,便士;无效的富();钱() {}}; 事实证明,问题在于该对象是通过 Money mc; 实例化的,而变量未初始化. 推荐的解决方案是添加以下构造函数: Money::Mone
..
我是 Swift 新手,想用这样的实例方法初始化对象的成员变量: class MyClass {变量 x:字符串var y: 字符串函数 createY() ->细绳 {self.y = self.x + "_test"//这个计算可能要复杂得多}初始化(x:字符串){自我.x = xself.y = self.createY()}} 基本上,我不想在 init 方法中内联所有初始化代码,而是
..
我有这段代码可以从文件中加载属性: 类配置{val 属性:属性 = {val p = 新属性()p.load(Thread.currentThread().getContextClassLoader.getResourceAsStream("props"))p}val forumId = properties.get("forum_id")} 这似乎工作正常. 我尝试将 properti
..
想象一下这个类: 类实体{上市:整数 x, y;实体():x(0),y(0){}实体(int x,int y):x(x),y(y){}} 这里有多种用我认为我知道的初始化类的方法: 实体ent1;//使用默认构造函数,所以x=0和y=0实体 ent2();//使用默认构造函数,所以x=0和y=0(不确定)实体 ent3(1, 2);//生成构造函数,所以 x=1 和 y=2实体 ent4
..
为什么声明为 const 的类成员必须在构造函数初始化器列表中初始化,而不是在构造函数体中? 两者有什么区别? 解决方案 在 C++ 中,当执行进入构造函数的主体时,对象被认为是完全初始化的. 你说: "我想知道为什么 const 必须是在构造函数初始化器中初始化列表而不是正文?" 您缺少的是 initialisation 发生在初始化列表中,而 assignmen
..
使用 C++11,我们现在可以在头声明中初始化类成员: class aClass{私人的:诠释 mInt{100};上市:一类();~aClass();}; 所以我有点困惑.传统上,构造函数中的初始化列表已用于成员初始化: aClass::aClass():分钟(100){...} 声明时新的 C++11 成员初始化功能是否使初始化列表过时?如果不是,那么一个比另一个有什么优势?什么情况会
..
谁能解释以下程序的输出?我认为构造函数是在实例变量之前初始化的.所以我期待输出是“XZYY". class X {Y b = 新 Y();X() {System.out.print("X");}}Y类{Y() {System.out.print("Y");}}公共类 Z 扩展 X {Y y = 新 Y();Z() {System.out.print("Z");}公共静态无效主要(字符串[]参数)
..
如果'Test'是一个普通的类,有什么区别: Test* test = new Test; 和 Test* test = new Test(); 解决方案 让我们学以致用,因为存在实际上会影响代码行为的差异.以下大部分内容来自对“旧新事物"文章的评论. 有时 new 运算符返回的内存会被初始化,有时它不会取决于您要更新的类型是否为 POD(普通旧数据),或者如果它是一个包含 POD
..
根据以下问题,我发现了 c# 编译器的一些奇怪行为. 以下是有效的 C#: static void K() {}静态无效主要(){var k = 新动作(新动作(新动作(K))));} 我觉得奇怪的是编译器“解构"传递的委托. ILSpy 输出如下: new Action(new Action(new Action(null, ldftn(K)), ldftn(Invoke)).
..
我不小心在 C# 中重载了一个构造函数,如下所示: public MyClass(string myString){//这里有一些代码}public MyClass(string myString, bool myParameter = false){//这里有一些不同的代码} 使用此代码,我的项目编译得很好.如果我只用 string 参数调用构造函数,C# 如何决定我要使用哪个构造函数?为什
..
我最近遇到了错误消息“空白的最终字段 obj 可能尚未初始化". 如果您尝试引用可能尚未分配值的字段,通常会出现这种情况.示例类: 公共类 Foo {私有最终对象 obj;公共 Foo() {obj.toString();//错误 (1)obj = 新对象();obj.toString();//很好 (2)}} 我使用 Eclipse.在 (1) 行我得到错误,在 (2) 行一切正常.到目前
..