javascript

java

python

c#

android

node.js

c++

reactjs

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

在C ++中调用析构函数和构造函数的顺序是什么

在C ++中调用析构函数和构造函数的顺序是什么? 使用一些基类和派生类的示例

trans by 2020-02-14T16:45:23Z

构造函数-C ++默认构造函数

例如,当我不声明constructor时,编译器将为我提供default constructor,它没有参数也没有定义(正文),因此将不采取任何措施。

如果我现在不声明default constructor,则编译器将为我提供default destructor没有定义(body),因此,我认为不采取任何措施。

因此,例如,如果我完成了一个对象,那么default constructor不会重新分配该对象使用的(空闲)内存吗? 如果没有,我们为什么要得到它?

并且,也许相同的问题也适用于default constructor。如果它什么也不做,为什么默认情况下会为我们创建它?

谢谢。

trans by 2020-02-14T10:57:42Z

构造函数-在Ruby中,“新”和“初始化”之间是什么关系? 初始化时如何返回nil?

我想要的是:

obj = Foo.new(0)  # => nil or false

这不起作用:

class Foo
  def initialize(val)
    return nil if val == 0
  end
end

我知道在C / C ++ / Java / C#中,我们无法在构造函数中返回值。

但是我想知道在Ruby中是否可能。

trans by 2020-02-13T00:48:59Z

谁删除在“ new”操作过程中分配的内存,该操作在构造函数中有异常?

我真的不敢相信我找不到明确的答案...

使用Blah运算符进行初始化的情况下,如何释放C ++类构造函数引发异常后分配的内存。 例如。:

class Blah
{
public:
  Blah()
  {
    throw "oops";
  }
};

void main()
{
  Blah* b = NULL;
  try
  {
    b = new Blah();
  }
  catch (...)
  {
    // What now?
  }
}

当我尝试此操作时,catch块中的Blah为NULL(这很有意义)。

调试时,我注意到该控件在到达构造函数之前已进入内存分配例程。

这似乎在MSDN网站上证实了这一点:

使用new分配内存时   对于C ++类对象,该对象的   内存之后调用构造函数   被分配。

因此,请记住从未分配局部变量Blah(即catch块中为NULL)如何删除分配的内存?

得到一个跨平台的答案也很好。 即C ++规范怎么说?

澄清:我不是在说类在c'tor中分配内存本身然后抛出的情况。 我很高兴在那种情况下不会打电话给d'tor。 我说的是用于分配对象的内存(在我的情况下为Blah)。

trans by 2020-02-10T07:57:49Z

在Kotlin中,如何扩展具有多个构造函数的类?

我正在学习Kotlin,遇到了一个我无法解决的问题。我想在Kotlin中扩展Java类RuntimeException,并能够在不同情况下使用它的三个构造函数中的任何一个(基于我当时想抛出异常的信息)。 在Java中,我的课程如下所示:

public class PhotoLibException extends RuntimeException {

    public PhotoLibException(String message, RuntimeException ex) {
        super(message, ex);
    }

    public PhotoLibException(String message) {
        super(message);
    }

    public PhotoLibException(RuntimeException ex) {
        super(ex);
    }
}

当我尝试在Kotlin中执行此操作时,我将以下答案用作指导:但是,Kotlin辅助构造函数在尝试弄清楚如何正确调用适当的超级构造函数时遇到了问题。 例如,使用函数似乎是一种很好的方法,如下所示:

fun PhotoLibException(message: String): PhotoLibException {
    val ex = null
    return PhotoLibException(message, ex)
}

fun PhotoLibException(ex: Exception): PhotoLibException {
    val message = ""
    return PhotoLibException(message, ex)
}

class PhotoLibException(message: String, ex: Exception?): RuntimeException(message, ex) {
}

但是,在上面的这个Kotlin示例中,我总是使用两个参数调用超级构造函数,而不是最适合这种情况的构造函数。 因此,我上面所说的有效,但是并不能完全实现Java在每种情况下都调用不同构造函数的情况。我还尝试在上面的每个乐趣中实例化一个新的RuntimeException,并将其强制转换为PhotoLibException,但是我不允许这样做。

有人可以建议我如何在Kotlin中正确执行此操作吗?

trans by 2020-02-09T04:02:45Z

java-构造函数是否必须总是公开的?

这个问题已经在这里有了答案:

  • java中private构造函数的用法是什么?                                     10个答案

我的第一个问题是-

   class Explain() {
        public Explain() {
      }
   }

构造函数应始终声明为公共吗?

如果我创建27386807646981990199040构造函数,该怎么办。

我经常看到构造函数隐式地是273868076469819901990。那么为什么private有用呢? 还是根本没有用。 因为没有人可以调用它,或者永远都不能创建对象(因为private构造函数)! 这是我的第二个问题。

trans by 2020-02-08T15:30:21Z

C ++-复制构造函数和赋值操作

如果我重写operator=,副本构造函数会自动使用new运算符吗? 同样,如果我定义一个复制构造函数,operator=是否会自动“继承”该复制构造函数的行为?

trans by 2020-02-08T01:51:08Z

CodeGo.net>在构造函数中抛出ArgumentNullException?

对于具有单个参数的构造函数,如果参数为null / empty,可以在构造函数内引发ArgumentNullException吗? 或者,应该在实际使用该参数的方法中抛出它吗? 谢谢。

trans by 2020-02-07T04:25:39Z

继承-使用C ++基类构造函数?

在使用模板时,我遇到了使基类构造函数可从继承的类进行访问以创建对象以减少复制/粘贴操作的需求。我当时想通过using关键字以与函数大小写相同的方式执行此操作,但这不起作用。

class A
{
public: 
    A(int val) {}
};

class B : public A
{
};

class C : public A
{
public:
    C(const string &val) {}
};

class D : public A
{
public:
    D(const string &val) {}
    using A::A;              // g++ error: A::A names constructor
};

void main()
{
    B b(10);                // Ok.   (A::A constructor is not overlapped)
    C c(10);                // error: no matching function to call to 'C::C(int)'
}

所以我的问题是:在继承的类中声明了新的基类构造函数之后,有什么方法可以导入吗?

还是只有一种方法可以声明新的构造函数并从初始化列表中调用基本构造函数?

trans by 2020-02-05T01:13:16Z

在C#中从另一个构造函数的主体中调用一个构造函数

我需要从另一个构造函数的主体中调用一个构造函数。 我怎样才能做到这一点?

基本上

class foo {
    public foo (int x, int y)
    {
    }

    public foo (string s)
    {
        // ... do something

        // Call another constructor
        this (x, y); // Doesn't work
        foo (x, y); // neither
    }
}
trans by 2020-02-05T00:46:53Z

在C#中调用重写的构造方法和基本的构造方法

我有两个类Foo和Bar,它们具有如下构造函数:

class Foo
{
    Foo()
    {
      // do some stuff
    }

    Foo(int arg)
    {
      // do some other stuff
    }
}

class Bar : Foo
{
    Bar() : base()
    {
      // some third thing
    }
}

现在,我想为带有int的Bar引入一个构造函数,但是我希望Bar()中发生的事情以及Foo(int)中的事情都可以运行。 像这样:

Bar(int arg) : Bar(), base(arg)
{
  // some fourth thing
}

在C#中有什么方法可以做到这一点? 到目前为止,我最好的方法是将Bar()完成的工作放到一个函数中,该函数也会被Bar(int)调用,但这非常不雅致。

trans by 2020-02-04T10:50:26Z

语法-Java Lombok:在@AllArgsConstructor中省略一个字段?

如果我使用Lombok指定@AllArgsConstructor,它将生成一个构造函数,用于设置所有声明的(不是最终的,不是静态的)字段。是否可以省略某些字段,而为其他所有字段保留生成的构造函数?

trans by 2020-02-03T15:08:06Z

powershell-如何为采用单个数组参数的构造函数调用New-Object?

在PowerShell中,我想使用New-Object调用单参数.Net构造函数new X509Certificate2(byte[] byteArray)。问题是,当我使用powershell中的字节数组执行此操作时,我得到了

新对象:找不到“ X509Certificate2”的重载,并且参数计数为“ 516”。

trans by 2020-02-02T21:15:06Z

PHP构造函数返回NULL

我有这个代码。 User对象构造函数是否有可能以某种方式失败,以便为$this->LoggedUser分配NULL值,并在构造函数返回后释放对象?

$this->LoggedUser = NULL;
if ($_SESSION['verbiste_user'] != false)
  $this->LoggedUser = new User($_SESSION['verbiste_user']);    
trans by 2020-02-02T08:49:45Z

C ++,是否可以直接调用构造函数,而无需new?

如果我已经有对象存储空间,可以不使用new显式调用构造函数吗?

class Object1{
    char *str;
public:
    Object1(char*str1){
        str=strdup(str1);
        puts("ctor");
        puts(str);
    }
    ~Object1(){
        puts("dtor");
        puts(str);
        free(str);
    }
};

Object1 ooo[2] = {
     Object1("I'm the first object"), Object1("I'm the 2nd")
};

do_smth_useful(ooo);
ooo[0].~Object1(); // call destructor
ooo[0].Object1("I'm the 3rd object in place of first"); // ???? - reuse memory
trans by 2020-01-30T07:25:29Z

javascript-异步构造

我如何最好地处理以下情况?

我有一个构造函数,需要一些时间才能完成。

var Element = function Element(name){
   this.name = name;
   this.nucleus = {};

   this.load_nucleus(name); // This might take a second.
}

var oxygen = new Element('oxygen');
console.log(oxygen.nucleus); // Returns {}, because load_nucleus hasn't finished.

我看到三个选项,每个选项似乎都不正常。

一,向构造函数添加回调。

var Element = function Element(name, fn){
   this.name = name;
   this.nucleus = {};

   this.load_nucleus(name, function(){
      fn(); // Now continue.
   });
}

Element.prototype.load_nucleus(name, fn){
   fs.readFile(name+'.json', function(err, data) {
      this.nucleus = JSON.parse(data); 
      fn();
   });
}

var oxygen = new Element('oxygen', function(){  
   console.log(oxygen.nucleus);
});

二,使用EventEmitter发出“已加载”事件。

var Element = function Element(name){
   this.name = name;
   this.nucleus = {};

   this.load_nucleus(name); // This might take a second.
}

Element.prototype.load_nucleus(name){
   var self = this;
   fs.readFile(name+'.json', function(err, data) {
      self.nucleus = JSON.parse(data); 
      self.emit('loaded');
   });
}

util.inherits(Element, events.EventEmitter);

var oxygen = new Element('oxygen');
oxygen.once('loaded', function(){
   console.log(this.nucleus);
});

或三,阻止构造函数。

var Element = function Element(name){
   this.name = name;
   this.nucleus = {};

   this.load_nucleus(name); // This might take a second.
}

Element.prototype.load_nucleus(name, fn){
   this.nucleus = JSON.parse(fs.readFileSync(name+'.json'));
}

var oxygen = new Element('oxygen');
console.log(oxygen.nucleus)

但是我以前从未见过这样的事情。

我还有什么其他选择?

trans by 2020-01-30T04:33:15Z

javascript-在Derived.prototype = new Bas上使用'new'关键字的原因是什么

以下代码是做什么的:

WeatherWidget.prototype = new Widget;

其中new是构造函数,我想用新函数WeatherWidget扩展Widget'class'。

new关键字在那儿做什么?如果将其排除在外会发生什么?

trans by 2020-01-30T01:15:14Z

在没有参数的构造函数上没有括号是语言标准吗?

我正在使用g ++在Cygwin中编译C ++程序,并且有一个其构造函数没有参数的类。 我的台词是:

MyClass myObj();
myObj.function1();

当尝试编译它时,我得到了消息:

error: request for member 'function1' in 'myObj', which is of non-class type 'MyClass ()()'

经过一番研究,我发现解决方法是将第一行更改为

MyClass myObj;

我可以发誓我以前在C ++中用括号完成了空的构造函数声明。 这可能是我正在使用的编译器的限制吗?还是语言标准真的说不对没有参数的构造函数使用括号?

trans by 2020-01-30T00:26:14Z

继承-在C#中,您需要调用基本构造函数吗?

在C#中,如果我有一个带有默认构造函数的继承类,是否必须显式调用基类的构造函数,还是将其隐式调用?

class BaseClass
{
    public BaseClass()
    {
        // ... some code
    }
}
class MyClass : BaseClass
{
    public MyClass() // Do I need to put ": base()" here or is it implied?
    {
        // ... some code
    }
}
trans by 2020-01-28T00:31:50Z

c#-基类不包含无参数构造函数?

我通过删除一些空的构造函数使我的构造函数更加严格。 我对继承还很陌生,并且对我得到的错误感到困惑:基类不包含无参数构造函数。 如何在A中没有空构造函数的情况下使A2继承自A。而且,根据我个人的理解,为什么A2要求A的构造函数为空?

Class A{
    //No empty constructor for A
    //Blah blah blah...
}

Class A2 : A{
    //The error appears here
}
trans by 2020-01-25T10:23:21Z

1 2 3 4 5 6 7 8 9 下一页 共9页