c++ - "."、 "::"和 "->"之间的区别

标签 c++

在 c++ 中,这 3 个代码块之间有什么区别吗:

MyClass->m_Integer // 1
MyClass::m_Integer // 2
MyClass.m_Integer  // 3

最佳答案

->. 运算符是访问类实例成员的方法,而 :: 允许您访问静态类的成员。

->. 的区别在于,箭头用于通过指向实例的指针进行访问,而点用于访问值(非指针)。

例如,假设您有一个定义为 MyClass 的类:

class MyClass
{
public:
    static int someValue();
    int someOtherValue();
};

您将在以下情况下使用这些运算符:

MyClass *ptr = new MyClass;
MyClass value;

int arrowValue = ptr->someOtherValue();
int dotValue = value.someOtherValue();
int doubleColonValue = MyClass::someValue();

在 Java 中,这看起来像:

MyClass ref = new MyClass;

int dotValue = ref.someOtherValue();
int doubleColonValue = MyClass.someValue();

关于c++ - "."、 "::"和 "->"之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6894370/

相关文章:

c++ - 模板类遇到 __declspec(import) 时出现 Visual Studio 链接器错误

c++ - 2D MemoryView 到 C 指针错误(1D 有效,但 2D 无效)

c++ - 容器 : Vector class. ... 慢

c++ - 优化 C++ 二维数组

c++ 在类之外,变量声明的顺序是否保证是构造的顺序?

c++ - 如何在 MPI(openMPI 应用程序)中获取后端传输类型/配置?

c++ - 优先选择隐式转换而不是其他转换

c++ - 触发时无法将 QAction 链接到函数 (Qt 5)

c++ - 气泡排序-如何使用?

c++ - 如何在C++中调用execute命令行