在c ++中,这三个代码块之间有任何区别:
MyClass->m_Integer // 1
MyClass::m_Integer // 2
MyClass.m_Integer // 3
Run Code Online (Sandbox Code Playgroud)
Dan*_*her 11
在->与.运营商的方式来访问一个类的实例的成员,并::允许你访问类的静态成员.
->和之间的区别在于.箭头用于通过指向实例的指针进行访问,其中点用于访问值(非指针).
例如,假设您有一个MyClass定义为的类:
class MyClass
{
public:
static int someValue();
int someOtherValue();
};
Run Code Online (Sandbox Code Playgroud)
您将在以下情况下使用这些运算符:
MyClass *ptr = new MyClass;
MyClass value;
int arrowValue = ptr->someOtherValue();
int dotValue = value.someOtherValue();
int doubleColonValue = MyClass::someValue();
Run Code Online (Sandbox Code Playgroud)
在Java中,这看起来像:
MyClass ref = new MyClass;
int dotValue = ref.someOtherValue();
int doubleColonValue = MyClass.someValue();
Run Code Online (Sandbox Code Playgroud)
- >表示MyClass是指向类的指针,并且指针需要被解引用才能获取成员m_Integer
::是范围或命名空间运算符.这意味着m_Integer要么是静态的,要么需要特定地识别m_Integer所在的范围或命名空间.
.意味着m_Integer正在从MyClass直接访问(而不是通过指针).它几乎是你如何从Java中访问成员,应该是你最熟悉的那个.
| 归档时间: |
|
| 查看次数: |
245 次 |
| 最近记录: |