在 C++ 中制作“对象”| C++ | JS [关闭]

Posted

技术标签:

【中文标题】在 C++ 中制作“对象”| C++ | JS [关闭]【英文标题】:Making "Objects" In C++ | C++ | JS [closed] 【发布时间】: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++ 中实现这一目标的更方便的方法吗?如果有,怎么做?

【问题讨论】:

【参考方案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 注意到,但它可能有用。

以上是关于在 C++ 中制作“对象”| C++ | JS [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Fast/Faster-RCNN 在 C++ 上制作对象检测器的最简单方法是啥?

在使用 QOpenGLFunctions 时将 OpenGL 功能封装在 C++ 对象中

VB.NET和C++之间的区别

C++中用于对象构造的**成语

在 C++ 中读取具有动态数组的对象

如何为 Python 制作 C++ 库