c ++中“::”“。”和“ - >”之间的区别

时间:2013-05-07 23:10:01

标签: c++ class pointers

我找到了Kwadrat班。作者使用了三种类型的operator :: ,.和 - >。箭头是唯一有效的箭头。这三者有什么区别?

#include <iostream>

using namespace std;

class Kwadrat{
public:
int val1, val2, val3;
    Kwadrat(int val1, int val2, int val3)
    {
        this->val1 = val1;
        //this.val2 = val2;
        //this::val3 = val3;
    }
};

int main()
{
    Kwadrat* kwadrat = new Kwadrat(1,2,3);
    cout<<kwadrat->val1<<endl;
    cout<<kwadrat->val2<<endl;
    cout<<kwadrat->val3<<endl;
    return 0;
}

5 个答案:

答案 0 :(得分:6)

  • ::命名命名空间中的类型,命名空间中的变量,类中的静态变量或类中的类型。
  • .命名实例变量或成员函数
  • a->b(*a).b的语法糖。

答案 1 :(得分:0)

->用于指针,.用于对象,::用于命名空间。具体做法是:

  1. 访问类/结构/联合成员时使用->.,第一种情况是通过指针,后者通过引用。
  2. 使用::引用namespaceclass(名称空间)中的函数,例如,在定义用类声明的方法时。

答案 2 :(得分:0)

x->y相当于(*x).y。也就是说,->在获取字段之前取消引用变量,而点运算符只是获取字段。

x::y在命名空间x中查找y。

答案 3 :(得分:0)

用例是:

    当你有一个指针时使用
  1. ->
  2. 如果您有对象实例,则使用
  3. . 如果您有静态成员或命名空间
  4. ,则使用
  5. ::

答案 4 :(得分:0)

- &gt;相当于说(* Kwadrat_pointer).value。当您有一个对象指针调用对象方法或检索对象成员时,可以使用它。

。 operator用于访问调用它的对象中的方法和成员(即“。”左侧的对象)。

::运算符称为范围运算符。它告诉您的程序在哪里查看,例如在类声明之外定义类方法时。