C++中在基类里声明为const的纯虚函数在派生类里的同名函数也是const的吗???

2024-07-11 23:01:25
推荐回答(2个)
回答1:

必须,函数是否为const也是重载条件之一
比如在一个类里,存在重名函数
void print();
void print()const;
那么是合法的重载
但是如果是
int print();
const int print();
则不是合法重载

因此想要实体化circle类,必须实现一个形如double print()const的函数才行

回答2:

virtual double print()const=0;这里指明一个一const类型的函数,并且是一个没有函数体的纯虚函数。因此,在派生的时候,也应该是一个const类型的函数。函数重载的条件是,函数名和类型是一样的。在类的继承时,参数及返回值类型也要一样,但在不使用类的一般情况下,参数类型和个数以及返回值类型可以不同,但函数名必须也要相同,同时,参数个数及类型一定不能与被重载的函数完全相同。例如:
void print();
void print(int i);
是一对重载函数。
void print(int i);
void print(float i);
也是一对重载函数。
而void print();
float print();
则不是一对重载函数。