C++,请向 Python 用户解释一下类?

标签 c++

我正在尝试学习 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)、ErrorInfo。它有一个字符串数据成员authoringTool

publicprivate 内容是访问说明符。 private 部分中的内容只能由类的成员函数使用,而 public 部分中的内容可供任何人使用。还有另一种类型的节,称为protected,这意味着只有类及其子类可以访问它,其他人不能访问它1

如果您在没有先设置访问级别的情况下开始向类添加内容,则它默认为 private

您可以按任意顺序拥有任意数量的 publicprivateprotected 部分。

您需要这些不同的保护级别,因为您不希望其他人在您不知情的情况下弄乱您的数据。例如,如果您有一个表示分数的类,您不希望有人在您眼皮子底下将分母更改为 0。他们必须通过一个 setter 函数来检查新值是否有效,然后再将分母设置为新值。但这只是一个简单的例子。 Python 没有这些,这是该语言设计中的一个缺陷。

如果您读过一本 C++ 书籍,您所有的问题都会得到解答。使用 C++ 没有简单的出路。如果你尝试这样做,你最终会成为一名糟糕的 C++ 程序员。

1 您可以通过将其他人声明为 friend 来让其他人访问 privateprotected 成员(请参阅向上2)。

2 抱歉说了这么多“查一查”,但信息太多,无法放在这里。您必须为此类事情找到良好的资源。

关于C++,请向 Python 用户解释一下类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7299679/

相关文章:

c++ - 序列化与文件加载

PHP:如何解析 MySQL "LEFT JOIN"?

c++ - 重载取消引用运算符 (operator*())

c++ - 不抛出但依赖于抛出的库的类

c++ - 启用 boost::lexical_cast 以针对小于双范围的值抛出超出范围的错误

c++ - 如何在没有可变函数的情况下循环函数的参数

c++ - 将 Unicode 输出到控制台的最佳方法是什么?

c++ - 跨多个文件的好友功能

c++ - 如何将特定数量的字符从 istream 传递到 ostream

c++ - decltype 在 gcc 4.3.2 中不能正常工作?