我正在尝试学习 C++,感谢这篇文章,我发现 C++ 与 Python 和 Javascript 之间有很多相似之处:http://www.cse.msu.edu/~cse231/python2Cpp.html
但我根本无法理解 C++ 类,它们看起来像 Javascript 原型(prototype),但没那么容易。
例如:
//CLxLogMessage defined in header
class myLOG: public CLxLogMessage{
public:
virtual const char * GetFormat (){
return "Wavefront Object";
}
void Error (const std::string &msg){
CLxLogMessage::Error (msg.c_str ());
}
void Info (const std::string &msg){
CLxLogMessage::Info (msg.c_str ());
}
private:
std::string authoringTool;
};
问题:这个公共(public)/私有(private)的东西到底是什么!?
编辑:说实话,我比Python更喜欢C++,因为我可以了解一切的真实含义,而不是简单的自动化命令,例如我更喜欢使用“int X”而不是单独使用“X”。
谢谢
最佳答案
myLOG
是类的名称。它继承(查找2)自CLxLogMessage
,并具有函数GetFormat
(这是虚拟
,并且可以是由子类覆盖并通过基类指针调用,请查找2)、Error
和Info
。它有一个字符串数据成员authoringTool
。
public
和 private
内容是访问说明符。 private
部分中的内容只能由类的成员函数使用,而 public
部分中的内容可供任何人使用。还有另一种类型的节,称为protected
,这意味着只有类及其子类可以访问它,其他人不能访问它1。
如果您在没有先设置访问级别的情况下开始向类添加内容,则它默认为 private
。
您可以按任意顺序拥有任意数量的 public
、private
和 protected
部分。
您需要这些不同的保护级别,因为您不希望其他人在您不知情的情况下弄乱您的数据。例如,如果您有一个表示分数的类,您不希望有人在您眼皮子底下将分母更改为 0。他们必须通过一个 setter 函数来检查新值是否有效,然后再将分母设置为新值。但这只是一个简单的例子。 Python 没有这些,这是该语言设计中的一个缺陷。
如果您读过一本 C++ 书籍,您所有的问题都会得到解答。使用 C++ 没有简单的出路。如果你尝试这样做,你最终会成为一名糟糕的 C++ 程序员。
1 您可以通过将其他人声明为 friend
来让其他人访问 private
和 protected
成员(请参阅向上2)。
2 抱歉说了这么多“查一查”,但信息太多,无法放在这里。您必须为此类事情找到良好的资源。
关于C++,请向 Python 用户解释一下类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7299679/