据我所知,当我们不为类声明构造函数时,编译器将声明一个默认构造函数。
在以下代码中,我没有为“ PencilCase”类声明任何构造函数,而编译器无法生成默认构造函数...
#include <iostream>
enum COLOR {RED=1,BLACK,GREEN,BLUE};
class Pen
{
private:
int color;
public:
Pen(COLOR colr)
{
color=colr;
}
~Pen(){}
int GetPenColor() const
{
return color;
}
};
class Pencil
{
private:
int color;
public:
void SetPencilColor(COLOR cor)
{
color=cor;
}
int GetPencilColor() const
{
return color;
}
};
class PencilCase
{
private:
Pen pen1,pen2,pen3;
Pencil pencil1,pencil2,pencil3;
public:
Pen GetPen1() const {return pen1;}
Pen GetPen2() const {return pen2;}
Pen GetPen3() const {return pen3;}
void SetPen1(Pen pen) {pen1=pen;}
void SetPen2(Pen pen) {pen2=pen;}
void SetPen3(Pen pen) {pen3=pen;}
Pencil GetPencil1() const {return pencil1;}
Pencil GetPencil2() const {return pencil2;}
Pencil GetPencil3() const {return pencil3;}
void SetPencil1(Pencil pencilex){pencil1=pencilex;}
void SetPencil2(Pencil pencilex){pencil2=pencilex;}
void SetPencil3(Pencil pencilex){pencil3=pencilex;}
};
int main()
{
Pen penfirst(RED);
PencilCase myPencilCase;
myPencilCase.SetPen1(penfirst);
return 0;
}
我也尝试自行声明“ PencilCase”的构造函数 但是我收到以下错误:
“找不到默认的构造函数进行初始化”
我的主要问题是,为什么编译器说在我未声明构造函数的情况下却无法声明默认构造函数?我是否被迫独自声明了“ PencilCase”类的构造函数?如果您的回答是肯定的,为什么?