-4

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

#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;
}
4

5 回答 5

6
  • :: names a type within a namespace, a variable within a namespace, a static variable in a class, or a type in a class.
  • . names an instance variable or member function
  • a->b is syntactic sugar for (*a).b.
于 2013-05-07T23:13:22.630 回答
0

->适用于指针、.对象和::命名空间。具体来说:

  1. 在访问类/结构/联合成员时使用->or .,在第一种情况下通过指针,在后一种情况下通过引用。
  2. 用于::引用 anamespace或 a class(命名空间)中的函数,例如,在定义使用类声明的方法时。
于 2013-05-07T23:12:31.567 回答
0

x->y is equivalent to (*x).y. That is, -> dereferences the variable before getting the field while the dot operator just gets the field.

x::y looks up y in namespace x.

于 2013-05-07T23:13:08.707 回答
0

用例是:

  1. ->当你有一个指针时使用
  2. .当你有一个对象实例时使用
  3. ::当您有静态成员或命名空间时使用
于 2013-05-07T23:14:41.283 回答
0

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

这 。运算符用于访问调用它的对象(即“.”左侧的对象)中的方法和成员。

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

于 2013-05-07T23:15:48.207 回答