Mark one-parameter constructors as explicit & use override where possible

This commit marks (hopefully) ever one-parameter constructor as explicit.

It also uses override in (hopefully) all circumstances where a virtual
method is overridden.

There are a very few other minor changes - most of them were necessary
to get everything to compile (like one additional constructor). In one
case I changed an implicit operation to an explicit string conversion -
I think the automatically chosen conversion was much more convoluted.

This took longer than I want to admit but not as long as I feared :)
This commit is contained in:
Johanna Amann 2018-03-16 22:14:22 -07:00
parent 1f2bf50b49
commit 6d612ced3d
173 changed files with 1052 additions and 1046 deletions

View file

@ -42,7 +42,7 @@ public:
{ return padded_sizeof(*this) + pad_size(max_entries * sizeof(ent)); }
protected:
BaseList(int = 0);
explicit BaseList(int = 0);
BaseList(BaseList&);
void insert(ent); // add at head of list
@ -102,9 +102,9 @@ protected:
#define Listdeclare(type) \
struct List(type) : BaseList \
{ \
List(type)(type ...); \
explicit List(type)(type ...); \
List(type)() : BaseList(0) {} \
List(type)(int sz) : BaseList(sz) {} \
explicit List(type)(int sz) : BaseList(sz) {} \
List(type)(List(type)& l) : BaseList((BaseList&)l) {} \
\
void operator=(List(type)& l) \
@ -143,9 +143,9 @@ List(type)::List(type)(type e1 ...) : BaseList() \
#define PListdeclare(type) \
struct PList(type) : BaseList \
{ \
PList(type)(type* ...); \
explicit PList(type)(type* ...); \
PList(type)() : BaseList(0) {} \
PList(type)(int sz) : BaseList(sz) {} \
explicit PList(type)(int sz) : BaseList(sz) {} \
PList(type)(PList(type)& l) : BaseList((BaseList&)l) {} \
\
void operator=(PList(type)& l) \