我有以下课程:
class A
{
public:
A(int i)
:m_n{i}
{
std::cout << "A(int)\n";
}
// I don't need copy constructor.
A(const A&) = delete;
private:
int m_n;
};
然后我宣布了一个A:
的数组int main()
{
A aa[] {1, 2, 3};
return 0;
}
当我尝试在OnlineGDB上编译程序时 (https://www.onlinegdb.com/online_c++_compiler)使用C ++ 14,我得到了 以下错误:
main.cpp: In function 'int main()':
main.cpp:38:20: error: use of deleted function 'A::A(const A&)'
A aa[] {1, 2, 3};
^
main.cpp:22:5: note: declared here
A(const A&) = delete;
^
main.cpp:16:5: note: after user-defined conversion: A::A(int)
A(int i)
^
然后我将复制构造函数添加到A类:
A(const A& a)
:m_n{a.m_n}
{
std::cout << "A(const A&)\n"
}
并编译程序并输出以下内容:
A::A(int)
A::A(int)
我的问题:
由于从未调用过复制构造函数,为什么要定义它呢?