点运算符和范围解析运算符有啥区别

Posted

技术标签:

【中文标题】点运算符和范围解析运算符有啥区别【英文标题】:whats the difference between dot operator and scope resolution operator点运算符和范围解析运算符有什么区别 【发布时间】:2011-02-23 04:31:06 【问题描述】:

我只是想知道 .运算符和 :: 运算符?

【问题讨论】:

【参考方案1】:

考虑四点 '::' 的另一种方法是 scope resolution operator. 在范围内有多个具有相同名称的对象的情况下。您明确声明要使用哪一个:

 std::min(item, item2);

mycustom::min(item, item2);

点运算符'.'就是调用一个对象实例的方法和属性

Myobject myobject;
myobject.doWork();
myobject.count = 0;
// etc 

没有被问到,但是如果对象实例有另一个运算符可以使用 是用new动态创建的,就是箭头操作符'->'

Myobject myobject2 = new Myobject();
myobject2->doWork();
myobject2->count = 1;

【讨论】:

【参考方案2】:

如果您使用指向对象实例的指针,则必须使用 -> 代替“点”来访问对象的成员

【讨论】:

你不必必须 -- p->m 只是(*p).m 的语法糖;)【参考方案3】:

前者(点,.)用于访问对象的成员,后者(双冒号,::)用于访问命名空间或类的成员。

考虑以下设置。

namespace ns 
    struct type
    
        int var;
    ;

在这种情况下,要引用作为命名空间成员的结构,请使用::。要访问 type 类型的对象中的变量,请使用 .

ns::type obj;
obj.var = 1;

【讨论】:

所以,如果我们使用对象来访问某些东西,那么我们必须使用点运算符,如果我们使用类名,那么我们必须使用 ::,对吗?,你能给出一个也可以举个例子,如果你不介意的话! @oDx,这是正确的,所以如果你有一个类的静态变量或函数,你会使用带有类名的“::”来引用它们,而如果你有一个成员函数或成员变量,你会使用“。”带有类实例的名称。

以上是关于点运算符和范围解析运算符有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

范围解析运算符 :: 与成员访问运算符 。在 C# 中

JavaScript 中的 != 和 !== 运算符有啥区别?

四元运算符和长运算符有啥区别

“++”和“+= 1”运算符有啥区别?

SQL 中的 NOT 和 != 运算符有啥区别?

+=和=+ C赋值运算符有啥区别[重复]