类什么时​​候不包含构造函数?

时间:2013-02-23 01:09:13

标签: c++ constructor

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

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

3 个答案:

答案 0 :(得分:4)

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

所以这段代码:

class Foo {
};

与此代码相同:

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

<小时/> *除非这种情况不起作用,例如该类包含需要初始化的引用或const成员,或者从没有默认构造函数的超类派生。

答案 1 :(得分:0)

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

答案 2 :(得分: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;
};

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