C++;类还是命名空间? 我是C++编程初学者,我真的无法想象如何进行面向对象的设计。每次我应用类、继承、多态性或函数重载时,我编写的代码都会变得非常混乱,难以跟踪。在考虑面向对象的设计时,我总是想“也许我做了太多的事情让计算机无法处理”,“真的有必要这样做吗?”或者“我要做一个这个类的数组,把函数和私有变量放在这里不是很愚蠢吗?”

C++;类还是命名空间? 我是C++编程初学者,我真的无法想象如何进行面向对象的设计。每次我应用类、继承、多态性或函数重载时,我编写的代码都会变得非常混乱,难以跟踪。在考虑面向对象的设计时,我总是想“也许我做了太多的事情让计算机无法处理”,“真的有必要这样做吗?”或者“我要做一个这个类的数组,把函数和私有变量放在这里不是很愚蠢吗?”,c++,oop,C++,Oop,例如,当查看制作文件加载器的教程时(对于着色器、网格、平铺纹理贴图或更多),他们通常将函数和结构放在类中,我想为什么他们将其放在类中而不是使用结构和命名空间 class fileLoader{ public: fileLoader(const char* filePath); struct fileContents{ glm::vec2 location; //other data } //other funtions } vs 或者制作一个简单的rpg,他们说你应该在怪物、NPC和角色中使

例如,当查看制作文件加载器的教程时(对于着色器、网格、平铺纹理贴图或更多),他们通常将函数和结构放在类中,我想为什么他们将其放在类中而不是使用结构和命名空间

class fileLoader{
public:
fileLoader(const char* filePath);

struct fileContents{
glm::vec2 location;
//other data
}
//other funtions
}
vs

或者制作一个简单的rpg,他们说你应该在怪物、NPC和角色中使用类、继承和函数重载,但这很难做到,而且(在我看来)相当混乱。将怪物、NPC、胸部和其他东西制作为结构或数据集群,并通过多种功能转换属性,不是更容易吗


我是一名初学者,没有受过正式的编程教育,如果这对经验丰富的程序员来说是常识,那么很抱歉。

通常在类内实现结构或编写嵌套类(类内的类)时,您希望实现一个称为封装的原则,您希望用户隐藏或无法访问该结构或类的位置。现在,我们来解释为什么我们在类或结构中放置或函数符合面向对象设计,在面向对象设计中,您希望每个对象都有一组特定的功能,类似于汽车的功能。当然,您可以使用类似于您在问题中指定的设计的代码,但这与oop惯例不符。

经验法则:如果您从未实例化该类,而只是调用
静态
函数,或者该类没有任何实际属性,那么它只是一个“函数包”,这只是一个伪装的命名空间。你的第一个段落使你听起来像是把所有东西都放在一个源文件中,这使得事情变得不必要,如果你认为“结构或数据集”比具有适当功能的类更容易,你必须做一些奇怪的事情。但是,嘿,我在我的前几个项目中也有同样的想法:D(非虚拟)成员函数和免费函数之间的成本差异很小,所以请使用代码中更合理的函数。考虑到目前的情况,我很难想象,我几乎想建议将其声明为wiki/faq,可能是因为我一直认为汇编中的代码可能是什么样子:D。你能推荐一个好的OOP教程吗?你可以从youtube上搜索“用mosh编程”开始。他有很多关于编程概念的精心制作的视频。也检查CelNO的C++播放列表它有很多视频肯定会帮助你很多。
struct fileContents{
glm::vec2 location;
//other data
}

namespace FileLoader{
loadfile(const char* filepath);
//other funtions
}