【问题标题】:Making "Objects" In C++ | C++ | JS [closed]在 C++ 中制作“对象”| C++ | JS [关闭]
【发布时间】:2021-07-24 19:37:21
【问题描述】:

所以,我对 C++ 还很陌生,并且一直在摆弄它,但不明白为什么每个人都说 C++ 是 C 的面向对象版本。C 确实没有类、命名空间等。与 C++ 和 JavaScript 不同,但来自 JavaScript,我发现很难与 C++ 和对象建立联系。

在 JS 中,可以简单地做

let someObject = {};

并在其中放入一些数据以创建一个对象:someObject

例如,假设我有一个在 JavaScript 中看起来像这样的对象:

JavaScript

let someObject = {
    dataType: 'char',  // string
    character: 'c',    // char
    pos: {
        line: 1,   // unsigned int
        col:  1    // unsigned int
    }
}

在 JS 中,对象不是类,但 JS 中的类和其他一切都是对象。我可以在 C++ 中使用类,但为什么呢?他们不是在 C++ 中实现这一目标的更方便的方法吗?如果有,怎么做?

【问题讨论】:

    标签: javascript c++ object equivalent


    【解决方案1】:

    在 C++ 中,要创建自定义对象,您可以使用 classes、structs 和 unions(尽管 unions 是一个更高级的主题)。

    class 是用户定义的类型,其中默认访问修饰符是private

    structclass,但默认访问修饰符是 public

    union 是一个更高级的主题,您可以根据需要研究它。

    对于你的情况,你会翻译这个:

    let someObject = {
        dataType: 'char',  // string
        character: 'c',    // char
        pos: {
            line: 1,   // unsigned int
            col:  1    // unsigned int
        }
    }
    

    进入这个:

    class someObject {
        std::string str = "char";
        char ch = 'c';
    
        unsigned int line = 1;
        unsigned int column =  1;
    };
    

    如果您愿意,可以为您的 ints 创建一个子类“pos”。

    有很多教程可供您尝试。

    【讨论】:

    • 尽管union 创建了一个类结构,但它不太可能是他正在寻找的东西。
    • @Ranoiaetep 注意到,但它可能有用。
    猜你喜欢
    • 2014-11-22
    • 1970-01-01
    • 2018-10-04
    • 2016-09-13
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    • 2012-11-08
    相关资源
    最近更新 更多