gpt4 book ai didi

c++ - 如何避免 protected 类成员?

转载 作者:太空狗 更新时间:2023-10-29 20:22:46 26 4
gpt4 key购买 nike

我在很多讨论中都读到,protected 类成员是不好的,我明白了其中的原因。但是给出下面的例子,什么是最优雅的方法来使 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;
}

最佳答案

如果您指的是 Why is Clean Code suggesting avoiding protected variables? 中的原因,您还需要记住,这些指南适用于现实世界的场景,在这些场景中,继承层次结构通常不像 Animal 和 Dog 那样清晰。对于企业级应用程序,许多开发人员很容易从继承的角度来思考,好像它会在未来带来更多的组织,但实际上变量被不加考虑地扔进了基类,随着时间的推移,结构膨胀并侵 eclipse 了组织上下文其成员。

在您的简单情况下,使用 protected 没问题。

关于c++ - 如何避免 protected 类成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36391112/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com