1

我对 C++ 很陌生,但对其他语言有一般的了解。最近我看到了一些关于 C++ 的教程,有时我看到没有自己的构造函数的类,甚至没有className();. 这可能也存在于其他语言中,但我以前从未见过。我想我以前也没有见过它们,所以我的问题是:它们有什么用?它们是什么?我试着用谷歌搜索这个,但我不知道它的名字..“无构造函数类”并没有给我太多。

如果没有构造函数,是否可以实例化它?或者它更像是一个静态的东西?如果我有一个包含整数但没有构造函数的类,我可以去int i = myClass.int;或类似的东西吗?你如何访问无构造函数的类?

4

3 回答 3

4

如果您没有显式声明构造函数,那么编译器会为您提供一个零参数的构造函数。*

所以这段代码:

class Foo {
};

与此代码相同:

class Foo {
public:
    Foo() {};
};


* 除非这不起作用,例如,类包含需要初始化的引用或 const 成员,或者派生自没有默认构造函数的超类。

于 2013-02-23T01:10:41.173 回答
0

如果您没有显式指定构造函数,编译器会为您生成默认构造函数(没有参数的构造函数和复制构造函数)。所以没有无构造函数类这样的东西。您可以使您的构造函数无法访问以控制您的类的实例何时以及如何创建,但这是另一回事。

于 2013-02-23T01:12:33.140 回答
0

没有构造函数的类是实现接口的好模型。

许多接口由方法组成,没有数据成员,所以没有什么可构造的。

class Field_Interface
{
  public:
    // Every field has a name.
    virtual const std::string&  get_field_name(void) const = 0;

    //  Every field must be able to return its value as a string
    virtual std::string         get_value_as_string(void) const = 0;
};

上面的类被称为抽象类。它并不是要具有任何功能,而是要定义一个接口。

于 2013-02-23T01:27:56.667 回答