我在很多讨论中读到,拥有受保护的类成员是不好的,我也看出了其中的原因。但是,在下面的例子中,最优雅的方法是什么来使 const int age
成为 private
并解决由此引起的问题?
#include <iostream>
class Animal
{
public:
Animal(const int age) : age(age) {}
void print_age() const { std::cout << age << std::endl; }
protected:
const int age;
};
class Dog : public Animal
{
public:
Dog(const int age) : Animal(age) {}
void bark() const
{
if (age >= 1)
std::cout << "Woof!" << std::endl;
else
std::cout << "(...)" << std::endl;
}
};
int main()
{
Dog dog(1);
dog.print_age();
dog.bark();
return 0;
}
int getAge() const{ return age; }
的翻译是什么? - defaultage
设为私有的,那么你需要添加访问器(即 get 和 set)。但是你会将它们设为公共的吗?年龄是否应该在动物层次结构之外被修改?如果不是,你必须将其设为受保护的,然后你又回到了同样的问题。 - Marius Bancila