whats the difference between dot operator and scope resolution operator

亡梦爱人 提交于 2019-12-12 07:56:06

问题


I just wanted to know the difference between . operator and :: operator?


回答1:


The former (dot, .) is used to access members of an object, the latter (double colon, ::) is used to access members of a namespace or a class.

Consider the following setup.

namespace ns {
    struct type
    {
        int var;
    };
}

In this case, to refer to the structure, which is a member of a namespace, you use ::. To access the variable in an object of type type, you use ..

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



回答2:


Another way to think of the quad-dot '::' is the scope resolution operator. In cases where there are more than one object in scope that have the same name. You explicitly declare which one to use:

 std::min(item, item2);

or

mycustom::min(item, item2);

The dot operator '.' is to call methods and attributes of an object instance

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

It was not asked, but there is another operator to use if an object instance is created dynamically with new, it is the arrow operator '->'

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



回答3:


If you are using a pointer to an object instance, you'll have to access the members of the object using -> in place of "dot"



来源:https://stackoverflow.com/questions/2896286/whats-the-difference-between-dot-operator-and-scope-resolution-operator

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!