c++ - 如果我们在 C++ 中重载构造函数,默认构造函数是否仍然存在?

标签 c++ constructor default-constructor

<分区>

Possible Duplicate:
Why does the default parameterless constructor go away when you create one with parameters

我写了下面的程序

#include <iostream>
class A {
public:
    A(int i) {std::cout<<"Overloaded constructor"<<std::endl;}
}

int main() {
A obj;
return 0;
}

编译程序时出现以下错误:

没有匹配的函数来调用 A::A() 候选人是: A::A(整数) A::A(常量 A&)

最佳答案

在这种情况下是否存在默认构造函数取决于您是否定义它。如果您自己定义另一个构造函数,它将不再被隐式定义。幸运的是,它很容易带回来:

A() = default;

请注意,术语“默认构造函数”指的是可以在没有任何参数的情况下调用的任何构造函数 (12.1p5);不仅针对有时隐式定义的构造函数。

关于c++ - 如果我们在 C++ 中重载构造函数,默认构造函数是否仍然存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12271742/

相关文章:

c++ - Linker cannot find qwebp lib - 静态Qt5.3.2编译

c++ - 如何让 NDK 调试在 Android Studio 中工作?

c++ - 将一组字符串与一个字符串进行比较的最快方法是什么?

java - 在构造函数和方法中调用 thread.start() 方法有什么区别

java - 使用 'default' HashMap 调用不同的构造函数

c++ - 类默认构造函数

c++ - 将屏蔽位移至 lsb

java - Java 中的静态属性

c++ - 有什么建议可以精确地制作以下 c++ 代码吗?

c++ - 如何检测一个类是否在 C++ 中具有隐式构造函数和原始成员?