标签: constructor

只用关键字 args 初始化 python 对象

我想知道如何在 python 中初始化一个对象,只使用命名的 args,如果可能的话。

在此处输入图片说明

如果self.name = name 和self.age = age 的顺序互换,则错误在于初始化age。我将这些作为关键字参数提供给对象,那为什么还不够呢?我看到一个类深入 python 实例化,使用显式命名的关键字参数和它们的默认值(文件名=无),所以我认为 **kwargs 也可以工作。谢谢

python constructor object instantiation

-2
推荐指数
1
解决办法
3758
查看次数

使用移动构造函数与传递指针的优势是什么?

Foo(Foo&& other) {
  this->bar = other.bar;
  other.bar = nullptr;
}

Foo(Foo* other) {
  this->bar = other->bar;
  other->bar = nullptr;
}
Run Code Online (Sandbox Code Playgroud)

上面两个似乎只是在做同样的事情。那么为什么推荐使用移动构造函数呢?它提供了哪些优势?

c++ constructor move move-semantics

-2
推荐指数
1
解决办法
600
查看次数

为什么我看到“与其类同名的成员函数必须是构造函数”?

我有一个有用的函数,我想将它从独立实用程序转换为 RAII 样式的帮助程序类。我对类的定义进行得很顺利,直到我粘贴函数代码并重命名它。此时函数名用红色下划线标出,工具提示说“与其类同名的成员函数必须是构造函数”。

此错误消息没有帮助。我知道我不能编写与类同名的函数。我希望这个函数是一个构造函数。为什么不是?这是怎么回事?

前:

void Useful( int Param ) // works, and is useful
{
    // do useful things
}
Run Code Online (Sandbox Code Playgroud)

后:

class Useful
{
    void Useful( int Param ) // generates error
    {
        // do useful things
    }
};
Run Code Online (Sandbox Code Playgroud)

c++ constructor compiler-errors

-2
推荐指数
1
解决办法
1745
查看次数

参数化构造函数的目的是什么?

他们为什么要用?顺便说一下,我是初学者.我理解初始化值的默认构造函数,因为它具有逻辑意义,但为什么使用带参数的构造函数来表示实例变量age例如等于a.什么目的?没有它,只有初始化构造函数会发生什么?这里提出的其他问题没有意义,例如:

public class MyCats {
    private int age;
    private String name;

 public MyCats(int a, String n) {  // why do I need this?
    age = a;
    name = n;
 }

 public MyCats() {
   age = 0;
   name = "";
 }
}
Run Code Online (Sandbox Code Playgroud)

java parameters constructor

-2
推荐指数
1
解决办法
78
查看次数

没有默认构造函数的继承?

由于继承的类没有默认的构造函数,因此我显式调用了继承的类的构造函数,而在的构造函数上我仍然得到了红色下划线(在VScode中) B

类“ A”不存在默认构造函数

类是否A必须获取默认构造函数?有没有什么办法解决这一问题?

这是简化的代码:

class A 
{
    public:
        int a_;

        A(int a): a_(a)
        {}
};

class B: public A
{
    public:
        A A1;
        A A2;

        B(int a1, int a2): A1(a1), A2(a2)
        {}
};

Run Code Online (Sandbox Code Playgroud)

c++ inheritance constructor

-2
推荐指数
1
解决办法
55
查看次数

如何在C#类构造函数中使用const

假设我有一个这样的课程:

public class SampleClass
{
    const string UnChangableUserName { get; private set; }
    string Password { get; private set; }

    public SampleClass(string UnChangableUserName, string Password)
    {
        this.Password = Password;
        this.UnChangableUserName = UnChangableUserName;
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望构造函数为const分配一个值,而不是在定义const时要设置的值。我该怎么做?

我知道我不能简单地使用set,但是使用const可以更有效地利用资源,并且更加优雅,其他开发人员也更容易理解,我不希望有set,因此他们不会添加它。

c# constructor const constants

-2
推荐指数
1
解决办法
135
查看次数

你能显式地使用构造函数重载吗?

如果我有 2 个构造函数重载

calculations(double vector, double angle);
calculations(double horizontalVector, double verticalVector);
Run Code Online (Sandbox Code Playgroud)

我如何确保编译器专门使用我选择的重载之一(因为每个重载在幕后做不同的事情)?

c++ constructor overloading disambiguation ambiguous-grammar

-2
推荐指数
1
解决办法
67
查看次数

为什么实例化对象时会调用构造函数两次

根据我的理解,我知道当一个对象被实例化时,构造函数被调用一次。但我不明白为什么两个构造函数都被调用而只有一个对象被实例化

#include <iostream>
using namespace std;
#define print(me) cout << me << endl;

class A 
{
    public:
    A() { print("default called"); }
    A(int x) { print("paramterized called"); }
};


int main()
{
    A a;
    a = A(10);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到输出:默认调用参数化调用

c++ oop constructor class

-2
推荐指数
1
解决办法
493
查看次数

如何简化 C++ 构造函数,将参数复制到其字段?

这就是我所拥有的:

class Vector3 {
    private:
        float x;
        float y;
        float z;
    public:
        Vector3(float x = 0, float y = 0, float z = 0) {
            this->x = x;
            this->y = y;
            this->z = z;
        }
        ...
};
Run Code Online (Sandbox Code Playgroud)

我觉得this->something = something很重复。我只想用参数构造一次 Vector3 并

然后不再访问这些字段,只需使用方法添加 Vector3。

有什么方法可以简化构造函数而不需要这样做吗this->something = something?或者有什么方法可以“密封”这些字段?

c++ constructor simplify

-2
推荐指数
1
解决办法
121
查看次数

为什么我能够在没有默认构造函数的情况下默认构造对象?

这是C和C++之间边界层上的一行函数.该函数获取了一堆void* 并将它们转换为它们应该存在的类型.发现错误:

MDLPeriph periph_dline = *static_cast<MDLPeriph*>(dline_periph);
Run Code Online (Sandbox Code Playgroud)

确实,periph_dline应该是一个参考.让我感到困惑的是,这段代码在没有警告的情况下编译.此外,gdb在检查此代码时,报告Internal GDB error.和崩溃.

据我所知,上面的代码默认构造了一个MDLPeriph对象.然后使用新对象的复制构造函数从右侧分配值.

但是MDLPeriph没有默认构造函数!这怎么可能?

平台和工具:

Windown 7
yagarto的这个版本使用以下版本:

binutils:2.23.1 gcc:4.7.2 newlib:1.20.0 gdb:7.5.1

(2012年12月22日,mifi)openocd o.7.0

c++ constructor

-3
推荐指数
1
解决办法
64
查看次数