簡體   English   中英

C++ class 還是命名空間?

[英]C++ class or namespace?

我是 c++ 編程的初學者,我真的無法想象如何制作 Object 面向設計。 每次我應用類、inheritance、多態性或 function 重載時,我編寫的代碼都會變得非常混亂且難以跟蹤。 我總覺得“可能我做的東西太多了,讓電腦處理不了”,“真的有必要這樣嗎?” 或“我要制作一個 class 的數組,把函數和私有變量放在這里是不是有點愚蠢?” 在考慮 Object 面向設計時。

例如,在查看制作文件加載器的教程(用於着色器、網格、平鋪紋理的映射等等)時,他們通常將它們的函數和結構放在類中,我想他們為什么將它放在 class 中而不是使用結構和命名空間?

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

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

對比

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

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

或者制作一個簡單的 rpg,他們說你應該使用類,inheritance 和 function 在怪物、NPC 和角色中超載,但很難遵循並且(在我看來)相當混亂。 把怪物、NPC、箱子等東西做成結構或數據集群,並通過多種功能來轉換它們的屬性,這不是更容易嗎?

我是初學者,沒有受過正規的編程教育,如果這對經驗豐富的程序員來說是常識,我很抱歉。

Usually when implementing a struct inside a class or writing a nested class (a class within a class) you want to achieve a principle called encapsulation, where you want that struct or class hidden or inaccessible by the user. 現在我們為什么要在 class 或結構中放置函數或函數符合面向 object 的設計,您希望每個 object 具有一組類似於 car 的特定功能。 當然,您可以使用類似於您在問題中指定的設計的代碼,但 go 與 oop 約定不一致。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM