标签: default-constructor

C++:继承的必备默认超类构造函数?

是否必须在超类中使用默认构造函数才能继承它?假设每个派生类构造函数都显式调用一个超类构造函数,提供正确的参数 - 这样的代码会起作用吗?

c++ inheritance default-constructor superclass

1
推荐指数
1
解决办法
6353
查看次数

我的构造函数至少指定了一个构造值,但它可以是默认构造的

参加以下课程:

class Foo{
public:
    Foo(std::string bar_, int baz_ = 7)
    :bar(bar_)
    ,baz(baz_)
    {}

private:
    std::string bar;
    int baz;
};
Run Code Online (Sandbox Code Playgroud)

Foo(std :: string bar_,int baz_ = 7); 是我唯一的构造函数,编译器不应该为我实现默认构造函数吧?我认为构建这个类的唯一两种方法是:

Foo foo("foo");  
//or  
Foo foo("foo",0);  
//plus copy constructor and overloaded assignment operator.
Run Code Online (Sandbox Code Playgroud)

然而,为什么这可能呢?

int main(){

    Foo foo();
}
Run Code Online (Sandbox Code Playgroud)

当唯一的公共构造函数需要第一个参数的值时,我不明白如何默认构造一个类.将默认构造函数设为私有或尝试使用C++ 11删除它,没有任何区别.这是怎么回事?
http://ideone.com/CL7IZo

c++ constructor class default-value default-constructor

1
推荐指数
1
解决办法
109
查看次数

如果定义了一个带参数的构造函数,为什么我的代码不使用默认的非参数化构造函数?

好的,我是我的主类,从我的框架中加载所有内容.我现在遇到的麻烦是我的碰撞检测; 我已经得到了它,如果它碰到某些东西,会发生一些事情.我有一个在GameScreen类中调用GameOverUI的方法,但我想在我的Enemy.class中使用它.我已经为该对象创建了一个新实例,但是它说它未定义.我没有得到的是该类没有定义,但是(游戏游戏)定义了一个名为GameScreen的方法.

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import android.graphics.Color;
import android.graphics.Paint;

import com.vaughanslater.framework.Game;
import com.vaughanslater.framework.Graphics;
import com.vaughanslater.framework.Image;
import com.vaughanslater.framework.Input.TouchEvent;
import com.vaughanslater.framework.Screen;

public class GameScreen extends Screen {
    enum GameState { 
        Ready, Running, Paused, GameOver
    }

    GameState state = GameState.Ready;

    // Variable Setup

    private static Background bg1, bg2;
    private static Robot robot;
    public static Heliboy hb, hb2;

    private Image currentSprite, character, character2, character3, heliboy,
            heliboy2, heliboy3, heliboy4, heliboy5;
    private Animation anim, hanim;

    private ArrayList tilearray = new ArrayList();

    int livesLeft …
Run Code Online (Sandbox Code Playgroud)

java constructor default-constructor

1
推荐指数
1
解决办法
342
查看次数

如何使用无参数构造函数中的2个参数调用构造函数?

我无法绕着这个缠绕我的头.我有2个构造函数.第一个有2个参数:

public Instrument(string name, string category)
{
    this.Name = name;
    this.Category = category;
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个默认(无参数)构造函数,其默认值为常量:

public Instrument()            
{
    this.Name = DefaultName;
    this.Category = DefaultCategory;
}
Run Code Online (Sandbox Code Playgroud)

我也应该从无参数构造函数调用2参数构造函数.我该怎么做呢?我也质疑为什么这甚至是必要的.如果从默认值调用2参数,您将如何将默认值传递给应用程序?所以我想我的主要问题是如何从默认构造函数中调用2参数构造函数?

c# constructor default-constructor

1
推荐指数
1
解决办法
2125
查看次数

带有空体的C++私有默认构造函数

我在这里看到了一些代码.

有一个类具有私有默认构造函数,其中包含空主体和参数化构造函数.代码评论说,默认的构造函数作出私有"这样它会不会有可能创建一个没有指定属性的对象" [属性是由类的数据成员代表.因此,没有明确定义私有默认构造函数的用法,因为它无法使用!

一旦我们声明了参数化构造函数,编译器就不会隐式提供默认构造函数!因此,没有办法创建没有参数传递给不存在的构造函数的对象.

我的问题是为什么我们需要在这种情况下,申报了默认的构造函数在所有

c++ default-constructor

1
推荐指数
1
解决办法
641
查看次数

如何在c ++中初始化参数化构造函数作为默认构造函数?

如何在c ++中初始化参数化构造函数作为默认构造函数?我的考试中提到了这个问题.我们得到了一个参数化的构造函数,它也作为默认构造函数.

c++ constructor default-constructor parameterized-constructor

1
推荐指数
1
解决办法
249
查看次数

如果只声明了复制构造函数,如何创建第一个对象?

我今天在网上看到了一个C++ 03示例.

class Cat {
    public:
        Cat(const Cat& iCat);
};
Run Code Online (Sandbox Code Playgroud)

有人告诉我,在这种情况下,编译器不会自动生成默认构造函数.如果为true,则表示可以从现有Cat对象创建新的Cat对象.

在这种情况下,有人能告诉我如何创建第一个Cat对象吗?如果我的理解是错误的,请善意地纠正我.

c++ copy-constructor default-constructor

1
推荐指数
1
解决办法
179
查看次数

构造函数中私有成员初始化的差异(C++)

我已经离开C++一段时间了,我试图确定定义类的私有成员变量(如果有的话)的这两个默认构造函数初始化之间的区别.类定义位于头文件中,而实现位于单独的文件中.所有私有成员变量都需要初始化为"0"或无意义的值.

注意:

int data [MAX_SIZE]是一个固定大小的编译时数组.int used:是数组的索引跟踪器.

一般来说,我习惯于通过以下方式初始化成员:

 // Default Constructor
 IntSet::IntSet()
 {
    data[MAX_SIZE-1] = {0}
    used = 0;
 }
Run Code Online (Sandbox Code Playgroud)

我正在梳理一些遗留代码并找到完全不同的语法:

 // Default Constructor
 IntSet::IntSet() : used(0)
 {
    data[MAX_SIZE-1] = {0};
 }
Run Code Online (Sandbox Code Playgroud)

最终结果有区别吗?

c++ initialization default-constructor

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

总是声明违约构造函数的优点和缺点是什么?

为每个非用户定义的构造函数声明始终默认的构造函数有什么利弊?

考虑一个具有用户定义的构造函数的类,该构造函数不需要其他用户定义的构造函数,它将是:

class Foo
{
public:
   Foo() { // user-defined declaration }
   Foo(const Foo&) = default;
   Foo(Foo&&) noexcept = default;
   ~Foo() = default;

   Foo& operator=(const Foo&) = default;
   Foo& operator=(Foo&&) = default;
}
Run Code Online (Sandbox Code Playgroud)

这样做有其他实际的优点/缺点吗?

c++ default-constructor defaulted-functions c++11

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

在任何情况下,删除ctor的类都可能有用吗?

我不知道为什么标准允许这种声明。

class A
{
public:
    A() : bar(0){}
    A(int foo) : bar(foo){}
private:
    int bar;
};

class B : public A
{
public:
    B() = delete;
};
Run Code Online (Sandbox Code Playgroud)

B无法实例化。

  B b1; //error: use of deleted function ‘B::B()’
  B b2(2); //error: no matching function for call to ‘B::B(int)’
Run Code Online (Sandbox Code Playgroud)

仍然适用

class A
{
public:
    A() : bar(0){}
private:
    int bar;
};

class B : public A
{
public:
    B() = delete;
};
Run Code Online (Sandbox Code Playgroud)

这使

B b1; //error: use of deleted function ‘B::B()’
Run Code Online (Sandbox Code Playgroud)

注意:这与没有默认的ctor不同:

class …
Run Code Online (Sandbox Code Playgroud)

c++ constructor default-constructor

1
推荐指数
1
解决办法
79
查看次数