我对C ++很陌生,但对其他语言有一般了解。最近我看过一些关于C ++的教程,我有时看到的类没有自己的构造函数,甚至没有className();
。这可能也存在于其他语言中,但我以前从未见过它。我不认为我之前已经看过它们,所以我的问题是:它们适用于什么?他们是什么?我试过谷歌搜索这个,但我不知道它的名字..'无构造类'并没有给我太多。
没有构造函数,是否可以实例化它?或者它更像是一个静态的东西?如果我有一个包含整数但没有构造函数的类,我可以去int i = myClass.int;
或类似的东西吗?你如何访问无构造函数的类?
答案 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;
};
上面的类被称为抽象类。它不是要有任何功能,而是要定义一个接口。