gpt4 book ai didi

c++ - 如何访问类变量?公共(public)方法/ setter/getter VS。遗产。有什么好处和坏处

转载 作者:太空狗 更新时间:2023-10-29 21:23:50 30 4
gpt4 key购买 nike

假设我在一个类中有一些数据结构如下

class DataStructure
{
DataStructure();
~DataStructure();

void reset();
void init();
void setiX();
...;
int getiX();
double get dx();
void addToList(OtherDataStructure dt);

private:
int ix;
int iy;
int iz;
double dx;
...;
vector<OtherDataStructure> dtStVec;
};

所以我通常按以下方式使用这个类

class manageSomething
{
manageSomething();
~manageSomething();

func1();
func2();
...;
funcN();
private:
some vatiables;
DataStructure structure; //HERE
};

所以我通常不得不使用 getter 和 setter 来访问数据结构变量

如果继承类不在主应用中,是否继承数据结构,直接访问所有元素会更好,如下

class manageSomething : public DataStructure
{
manageSomething();
~manageSomething();

func1();
func2();
...;
funcN();
private:
some vatiables;
};

因此 manageSomething 的用法用作

int main()
{
manageSomething manager;
///manager.stuff ....
return EXIT_SUCCESS;
}

我们什么时候决定选择哪一个?

最佳答案

你不应该继承 publicly 除非你正在编写的类确实扩展了你正在继承的类,即 manageSomething 是一种 DataStructure。这被称为 Liskov substitution principle .违反它会导致代码出现严重的可读性和可维护性问题。

private 继承的规则不那么严格,但通常你应该更喜欢组合而不是私有(private)继承,except under very specific circumstances .

这样做的结果是您的第一个代码片段(带有组合)可以正确执行所有操作,您无需更改它。

关于c++ - 如何访问类变量?公共(public)方法/ setter/getter VS。遗产。有什么好处和坏处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17345794/

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