Tag: 构造函数

在inheritance中调用构造函数/析构函数的顺序

关于创build对象的一个​​小问题。 说我有这两个类: struct A{ A(){cout << "A() C-tor" << endl;} ~A(){cout << "~A() D-tor" << endl;} }; struct B : public A{ B(){cout << "B() C-tor" << endl;} ~B(){cout << "~B() D-tor" << endl;} A a; }; 在主要我创build一个B的实例: int main(){ B b; } 请注意, B来自A并且还具有Atypes的字段。 我试图找出规则。 我知道当构造一个对象时,首先调用它的父构造函数,反之亦然。 怎么样的领域(在这种情况下)? 当B被创build时,它何时调用A的构造函数? 我还没有定义一个初始化列表,是否有某种默认列表? 如果没有默认列表? 和关于破坏的同样的问题。

从构造函数调用方法

请原谅任何小的语法错误或什么,我正在经历这与Jitsi模块,而不是超级熟悉Java想确认发生了什么事以及为什么以及如何修复。 public abstract class A { public A() { this.load(); } protected void load() { } } public class B extends A { private String testString = null; public B() { super(); } @Override protected void load() { testString = "test"; } } 应用程序在使用加载类名称方法创build类B的实例时执行此操作: 在类B中调用重载的load() 初始化variables(根据debugging器调用“private string testString = null”),将它们归零。 这是预期的Java行为? 什么可能导致这个? 这是在1.7 JDK上运行的Java 1.6应用程序。

默认构造函数是否初始化内置types?

默认构造函数(由编译器创build)是否初始化内置types?

从另一个调用一个构造函数

我有两个构造函数将值提供给只读字段。 class Sample { public Sample(string theIntAsString) { int i = int.Parse(theIntAsString); _intField = i; } public Sample(int theInt) { _intField = theInt; } public int IntProperty { get { return _intField; } } private readonly int _intField; } 一个构造函数直接接收值,另外一个构造函数进行一些计算并获取值,然后设置字段。 现在是这个问题了: 我不想复制设置代码。 在这种情况下,只设置一个字段,但当然可能有多个字段。 为了使字段只读,我需要从构造函数中设置它们,所以我不能将共享代码“提取”到实用程序函数中。 我不知道如何从另一个构造函数中调用。 有任何想法吗?

什么是斯卡拉更高的kindedtypes?

您可以在网上find以下内容: 较高的亲属types==types的构造函数? class AClass[T]{…} // For example, class List[T] 有人说这是一个更高级的types,因为它抽象了符合定义的types。 更高的亲属types是其他types的types,并构build一个新的types 这些虽然也被称为types构造函数 。 (例如, 在Scala中编程 )。 更高的kindedtypes==types构造函数,它将types构造函数作为types参数? 在更高类的generics中 ,您可以阅读 …抽象types的抽象types('高级types')…“ 这表明这一点 class XClass[M[T]]{…} // or trait YTrait[N[_]]{…} // eg trait Functor[F[_]] 是一个更高的kindedtypes。 因此,考虑到这一点,很难区分types构造函数 , 更高版本types和types构造函数作为types参数的types构造函数 ,因此上述问题。

C#成员variables的初始化 最佳实践?

在声明上初始化类成员variables是否更好? private List<Thing> _things = new List<Thing>(); private int _arb = 99; 或者在默认的构造函数? private List<Thing> _things; private int _arb; public TheClass() { _things = new List<Thing>(); _arb = 99; } 这只是一个风格问题,还是存在性能平衡,无论哪种方式?

了解JavaScript中的原型inheritance

我是JavaScript OOP的新手。 你能解释下面的代码块之间的区别吗? 我testing过,两个块都可以工作。 最佳做法是什么?为什么? 第一块: function Car(name){ this.Name = name; } Car.prototype.Drive = function(){ document.write("My name is " + this.Name + " and I'm driving. <br />"); } SuperCar.prototype = new Car(); SuperCar.prototype.constructor = SuperCar; function SuperCar(name){ Car.call(this, name); } SuperCar.prototype.Fly = function(){ document.write("My name is " + this.Name + " and I'm flying! […]

构造函数代码在Java中运行之前是否已初始化字段?

任何人都可以解释下面的程序的输出? 我认为构造函数是在实例variables之前初始化的。 所以我期待的输出是“XZYY”。 class X { Y b = new Y(); X() { System.out.print("X"); } } class Y { Y() { System.out.print("Y"); } } public class Z extends X { Y y = new Y(); Z() { System.out.print("Z"); } public static void main(String[] args) { new Z(); } }

inheritance构造函数

为什么这个代码: class A { public: explicit A(int x) {} }; class B: public A { }; int main(void) { B *b = new B(5); delete b; } 导致这些错误: main.cpp:在函数'int main()'中: main.cpp:13:错误:没有匹配函数调用'B :: B(int)' main.cpp:8:注意:候选人是:B :: B() main.cpp:8:note:B :: B(const B&) 不应该BinheritanceA的构造函数? (这是使用gcc)

Java构造函数inheritance

我想知道为什么在Java构造函数不被inheritance? 你知道什么时候你有这样的一个class级: public class Super { public Super(ServiceA serviceA, ServiceB serviceB, ServiceC serviceC){ this.serviceA = serviceA; //etc } } 后来当你从Superinheritance时,java会抱怨没有定义默认的构造函数。 解决scheme显然是这样的: public class Son extends Super{ public Son(ServiceA serviceA, ServiceB serviceB, ServiceC serviceC){ super(serviceA,serviceB,serviceC); } } 这个代码是重复的,而不是干燥和无用的(恕我直言)…所以再次提出的问题: 为什么java不支持构造函数inheritance? 不允许这种inheritance有什么好处吗?