我找到了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;
}
答案 0 :(得分:6)
::
命名命名空间中的类型,命名空间中的变量,类中的静态变量或类中的类型。.
命名实例变量或成员函数a->b
是(*a).b
的语法糖。答案 1 :(得分:0)
->
用于指针,.
用于对象,::
用于命名空间。具体做法是:
->
或.
,第一种情况是通过指针,后者通过引用。::
引用namespace
或class
(名称空间)中的函数,例如,在定义用类声明的方法时。答案 2 :(得分:0)
x->y
相当于(*x).y
。也就是说,->
在获取字段之前取消引用变量,而点运算符只是获取字段。
x::y
在命名空间x中查找y。
答案 3 :(得分:0)
用例是:
->
.
如果您有静态成员或命名空间::
醇>
答案 4 :(得分:0)
- &gt;相当于说(* Kwadrat_pointer).value。当您有一个对象指针调用对象方法或检索对象成员时,可以使用它。
。 operator用于访问调用它的对象中的方法和成员(即“。”左侧的对象)。
::运算符称为范围运算符。它告诉您的程序在哪里查看,例如在类声明之外定义类方法时。