protected
sınıf üyelerine sahip olmanın kötü olduğunu ve bunun nedenlerini görüyorum. Ancak aşağıdaki örnekte, const int age
private
'u yapmanın ve bundan kaynaklanan sorunu çözmenin en zarif yolu nedir?Korumalı sınıf üyelerinden nasıl korunulur?
#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 {dönüş yaşı; } '? – Default
Eğer 'yaş' özel yaparsanız, o zaman erişim sağlayıcıları eklemelisiniz (örneğin, al ve ayarla). Ama sonra onları halka açacak mısın? Yaşın hayvan hiyerarşisinin dışında değiştirilmesi mi gerekiyor? Eğer değilse, onu korumalı hale getirmelisiniz ve sonra aynı soruna geri döndünüz. –
@Default, bir temel sınıftan değişkenleri almak için erişimci işlevlerini kullanmak garip değil mi? – Chiel