javascript

git

java

python

git-remote

c++

github

django

c#

reactjs

css

content-type

variables

var

loops

iteration

std

c++-faq

git-checkout

generator

构造函数-如何用C ++写一个简单的类?

我已经阅读了很多有关C ++类的教程,但是他们错过了其他教程包括的内容。

有人可以告诉我如何编写和使用一个非常简单的C ++类,该类使用可见性,方法以及简单的构造函数和析构函数吗?

trans by 2020-08-12T04:30:19Z

如何在Scala中的默认构造函数中检查构造函数参数并引发异常或声明?

我想检查构造函数参数,并拒绝构造抛出IllegalArgumentException的情况,以防参数设置无效(值不符合预期约束)。 如何在Scala中编写代码?

trans by 2020-08-11T19:59:05Z

oop-C#继承和默认构造函数

假设有一个基类A和一个派生自B的类A。然后,我们知道类A的构造函数永远不会被类3006277890779649644932继承。但是,当创建新对象A时,-在类B的默认/自定义构造函数之前,将调用类3006277890779649644934的默认构造函数。 调用。 也许这样做的目的是需要将类A的字段初始化为默认值。

现在,假设类A已经定义了一个自定义构造函数。 这意味着编译器将静默删除类A的默认构造函数。 现在,在创建类B的新实例时,在调用类A932的构造函数之前会自动调用哪个类3006277890779649644931的构造函数? (在这种情况下,如何初始化类A的字段?)

trans by 2020-08-11T06:03:56Z

在Java中,可以从构造函数助手中初始化final字段吗?

我有一个最终的非静态成员:

private final HashMap<String,String> myMap;

我想使用构造函数调用的方法对其进行初始化。 由于myMap是最终版本,因此我的“ helper”方法无法直接对其进行初始化。 我当然有选择:

我可以直接在构造函数中实现myMap初始化代码。

MyConstructor (String someThingNecessary)
{
    myMap = new HashMap<String,String>();

    myMap.put("blah","blahblah");
    // etc...

    // other initialization stuff unrelated to myMap
}

我可以让我的助手方法构建HashMap,将其返回给构造函数,然后让构造函数将对象分配给myMap。

MyConstructor (String someThingNecessary)
{
    myMap = InitializeMyMap(someThingNecessary);

    // other initialization stuff unrelated to myMap
}

private HashMap<String,String> InitializeMyMap(String someThingNecessary)
{
    HashMap<String,String> initializedMap = new HashMap<String,String>();

    initializedMap.put("blah","blahblah");
    // etc...

    return initializedMap;
}

方法2很好,但是,我想知道是否有某种方法可以允许helper方法直接操作myMap。 也许表明它只能由构造函数调用的修饰符?

MyConstructor (String someThingNecessary)
{
    InitializeMyMap(someThingNecessary);

    // other initialization stuff unrelated to myMap
}


// helper doesn't work since it can't modify a final member
private void InitializeMyMap(String someThingNecessary)
{
    myMap = new HashMap<String,String>();

    myMap.put("blah","blahblah");
    // etc...
}
trans by 2020-08-11T00:35:22Z

java-用于实例化内部类的奇怪语法

我没想到在这个阶段我会再遇到Java根本上没有的新语法,但是瞧瞧,我刚遇到了一些东西:

确切的上下文和下面的代码应该做什么无关紧要-只是为了提供某种上下文。

我试图在IT Mill Toolkit中综合创建一个事件,所以我写了这样的话:

buttonClick(new Button.ClickEvent(button));

但是,Eclipse给了我以下错误消息:

无法访问Button类型的封闭实例。 必须使用一个封闭的类型为Button的实例来限定分配(例如x.new A(),其中x是Button的实例)。

当我按如下方式重写上面的行时,它不再抱怨:

buttonClick(button.new ClickEvent(button)); // button instanceof Button

因此,我的问题是:后一种语法到底是什么意思,为什么第一个片段不起作用? Java在抱怨什么?在第二版中它在做什么?

背景信息:ButtonButton.ClickEvent均为非抽象公共类。

trans by 2020-08-08T22:29:08Z

oop-OO Javascript构造器模式:新古典与原型

我看了道格拉斯·克罗克福德(Douglas Crockford)关于Javascript优秀部分和我的眼睛的演讲被打开。 他曾说过类似的话:“ Java语言是唯一一种优秀的程序员认为无需学习就可以有效使用它的语言。” 然后我意识到,我就是那个人。

在那次演讲中,他发表了一些对我来说非常令人惊讶和有见地的声明。 例如,JavaScript是地球上最重要的编程语言。 或者它是地球上最流行的语言。 而且,它在很多方面都被破坏了。

对我来说,他最令人惊讶的说法是“新的是危险的”。 他不再使用它。 他也不使用this

他为Java构造函数提供了一种有趣的模式,该模式允许私有和公共成员变量,并且既不依赖于new,也不依赖于this。看起来像这样:

// neo-classical constructor
var container =  function(initialParam) {
    var instance = {}; // empty object 

    // private members
    var privateField_Value = 0;
    var privateField_Name = "default";

    var privateMethod_M1 = function (a,b,c) {
        // arbitrary
    }; 

    // initialParam is optional
    if (typeof initialParam !== "undefined") {
        privateField_Name= initialParam;
    }

    // public members
    instance.publicMethod = function(a, b, c) {
        // because of closures,
        // can call private methods or
        // access private fields here. 
    };

    instance.setValue = function(v) {
        privateField_Value = v;
    };

    instance.toString = function(){
        return "container(v='" + privateField_Value + "', n='" + privateField_Name + "')";
    };

    return instance;
}


// usage
var a = container("Wallaby");
WScript.echo(a.toString()); 
a.setValue(42);
WScript.echo(a.toString()); 

var b = container();
WScript.echo(b.toString()); 

编辑:代码已更新为切换到小写的类名称。

这种模式是从Crockford的早期使用模型演变而来的。

问题:您是否使用这种构造函数模式? 您觉得它可以理解吗? 你有更好的吗?

trans by 2020-08-04T21:04:40Z

C#中的静态构造函数

我正在尝试使用如下所示的静态构造函数:

public static DataManager()
{
    LastInfoID = 1;
}

并得到此错误:

静态构造函数上不允许使用访问修饰符

我想知道我的问题是什么。

trans by 2020-08-03T11:29:24Z

为什么Java中的构造函数没有返回类型?

可能重复:
为什么构造函数不返回值

为什么构造函数没有返回类型,甚至没有void? 是什么原因呢?

trans by 2020-08-02T17:40:30Z

如何重载JS(Javascript)中对象的构造函数?

我可以做类似的事情吗:

function User(form) {
    this._username = form.username.value;
    this._password = form.password.value;
    this._surname = form.surname.value;
    this._lastname = form.lastname.value;
    this._birthdate = form.b_day.value+"-"+form.b_month.value+"-"+form.b_year.value;
    this._avatar = form.avatar;
    this._messages = new Array();
    this._messagesCount=0;
}

function User(userName,password,surname,lastName,birthdate) {
    this._username = userName;
    this._password = password;
    this._surname = surname;
    this._lastname = lastName;
    this._birthdate = birthdate;
    this._avatar = form.avatar;
    this._messages = new Array();
    this._messagesCount=0;
}
trans by 2020-08-02T02:29:13Z

dart-如何在构造函数中初始化final class属性?

在Java中,您可以执行以下操作:

class A {    
    private final int x;

    public A() {
        x = 5;
    }
}

在Dart中,我尝试过:

class A {    
    final int x;

    A() {
        this.x = 5;
    }
}

我收到两个编译错误:

The final variable 'x' must be initialized.

'x'不能用作设置器,因为它是最终的。

有没有办法在Dart的构造函数中设置最终属性?

trans by 2020-08-01T12:01:32Z

什么是C ++中的转换构造函数? 这是为了什么

我听说C ++有一些叫做“转换构造函数”或“转换构造函数”的东西。 这些是什么,它们是做什么用的? 我看到它与以下代码有关:

class MyClass
{
  public:
     int a, b;
     MyClass( int i ) {}
}

 int main()
{
    MyClass M = 1 ;
}
trans by 2020-07-30T04:30:13Z

内置类型是否具有默认构造函数?

阅读本文之后,我指出()产生0的原因是临时int是值初始化的,而不是因为int()调用了int的默认构造函数。(根据我的理解,本文存在缺陷。)

我还说过,原始(内置)类型没有构造函数。 原始作者要我检查$ 10.4.2(TC ++ PL)节,其中说

内置类型也具有默认构造函数($ 6.2.8)

但是我仍然认为语句“ C ++甚至允许内置类型(原始类型)具有默认构造函数”。 有缺陷(根据C ++ 03)。

我认为TC ++ PL中的Bjarne已将“类似符号的构造函数,即()”与实际的构造函数调用混合在一起。 在Bjarne撰写本书时,还没有引入值初始化,对吗? 那么,根据C ++ 98和C ++ 03,TC ++ PL中的文本是否不正确?

你们有什么感想?

编辑

我亲自(通过邮件)向Bjarne询问了TC ++ PL中有缺陷的文本,这是他的答复

我认为您将“实际的构造函数调用”与概念上的构造函数混为一谈。 内置类型被认为具有构造函数(标准用来描述其行为的任何词语)。

trans by 2020-07-27T21:36:08Z

使用Scala构造函数设置Trai中定义的变量

如果我理解正确的话,特征是最接近Java接口的东西,并且类构造函数会自动设置变量。

但是,如果我有一个扩展特征的类并有一个从特征中设置变量的构造函数,那该怎么办?

trait Foo {
    var foo: String
}

class Bar (foo: String) extends Foo { /* ... */ }

当我制作Bar对象时,要在哪里设置特征的foo字符串。

编译器似乎给我有关此错误。 实现此目的的正确方法是什么?

trans by 2020-07-26T21:28:43Z

不建议使用构造函数Date(...)。 这是什么意思? (Java)

我试图创建一个Date(int, int, int, int, int)像这样:

date = new Date(year-1900, mon-1, day, hrs, min, sec);

Eclipse发出警告:“不赞成使用构造函数Date(int, int, int, int, int)”。

不赞成使用构造函数是什么意思,我该怎么办?

trans by 2020-07-25T15:13:20Z

c#-是否支持非泛型类中的泛型构造函数?

不支持,是否支持,但是我必须做一些技巧?

例:

class Foo
{
  public Foo<T1,T2>(Func<T1,T2> f1,Func<T2,T1> f2)
  {
     ...
  }
}

泛型仅在构造函数中使用,没有字段/属性依赖于它们,我使用它(泛型)来强制f1和f2的类型相关。

备注:我找到了解决方法-静态方法Create,但是无论如何我还是很好奇为什么直接方法有问题。

trans by 2020-07-20T11:51:03Z

我在构造函数中写return语句怎么办?

如果我在构造函数中编写return语句怎么办? 是否符合标准?

struct A
{ 
     A() { return; } 
};

上面的代码编译良好,在ideone上没有任何错误。 但是以下代码没有:

struct A
{ 
   A() { return 100; } 
};

它在ideone上给出了这个错误:

错误:从构造函数返回值

我知道从构造函数返回值根本没有意义,因为它没有明确提及返回类型,而且我们根本无法存储返回值。 但我很好奇:

  • C ++标准中哪条语句允许第一个示例,但禁止第二个示例? 有没有明确的陈述?
  • 第一个示例中的返回类型是void吗?
  • 是否有任何隐式返回类型?
trans by 2020-07-18T23:39:05Z

java-“ this()”方法是什么意思?

我遇到了这段代码,我不退出这一行来理解它的含义或它在做什么。

public Digraph(In in) {
    this(in.readInt()); 
    int E = in.readInt();
    for (int i = 0; i < E; i++) {
        int v = in.readInt();
        int w = in.readInt();
        addEdge(v, w); 
    }
}

我了解this.method()this.variable是什么,但是this()是什么?

trans by 2020-07-14T14:56:53Z

如何在C ++类的初始化列表中初始化member-struct?

我在c ++中具有以下类定义:

struct Foo {
  int x;
  char array[24];
  short* y;
};

class Bar {
  Bar();

  int x;
  Foo foo;
};

并希望在Bar类的初始化程序中将“ foo”结构(及其所有成员)初始化为零。 可以这样做吗?

Bar::Bar()
  : foo(),
    x(8) {
}

... ?

还是foo(x)在初始化列表中到底做了什么?

还是从编译器自动将结构初始化为零?

trans by 2020-07-12T23:26:26Z

为什么其他方法可以是“静态的”,但构造函数不能?

我不明白为什么主要方法必须是静态的。 我了解静态变量,但是静态方法对我来说很难理解。 是否存在静态方法,以便可以在不会彼此冲突的两个不同类中创建两个具有相同名称的方法?

另外,我不明白为什么我不能创建静态构造函数。

谁能帮助解释这个概念?

trans by 2020-07-12T21:58:43Z

class-在C ++中定义对象而不调用其构造函数

在C ++中,我想将一个对象定义为这样的类的成员:

Object myObject;

但是,这样做会尝试调用它的无参数构造函数,该构造函数不存在。 但是,我需要在包含类完成一些初始化之后调用构造函数。 这样的事情。

class Program
{
public:
   Object myObject; //Should not try to call the constructor or do any initializing
   Program()
   {
      ...

      //Now call the constructor
      myObject = Object(...);
   }

}
trans by 2020-07-11T09:15:46Z

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