【发布时间】:2014-01-21 23:09:24
【问题描述】:
您好,我创建了一个具有三个构造函数、两个整数成员和一个 const int 成员的类。因此,对于一个构造函数,我使用初始化列表来分配 const int 成员,但在其他两个构造函数中出现错误
这是我的代码:
class base
{
public:
base();
base(const int _count);
base(int a ,int b);
~base();
protected:
int m_ia , m_ib;
const int count;
};
base::base()
{
}
base::base(const int _count):count(_count)
{
}
base::base(int a , int b)
{
m_ia = a ;
m_ib = b;
}
base::~base()
{
}
void main()
{
base *obj2 = new base(1000);
getchar();
}
错误数:2
1.'base::count' : 必须在 base() 的构造函数基/成员初始化列表中初始化
2.'base::count' : 必须在 base(int a ,int b) 的构造函数基/成员初始化列表中初始化
【问题讨论】:
-
... 以相同的方式在其他 2 个构造函数中初始化
count... 它不会因为您什么都没说就自动将其初始化为 0。 -
void main不合法。返回类型必须是int。此外,如果base应该是一个基类,那么该析构函数应该是虚拟的。obj2在这个例子中也应该是一个普通的对象。现在,它正在泄漏内存。最后,为什么不为其他成员也使用构造函数初始化列表呢?真的几乎从来没有任何不利的一面。
标签: c++ visual-c++