什么是点运算符和范围解析运算符之间的区别

时间:2010-05-24 10:38:39

标签: c++ scope-resolution

我只是想知道它们之间的区别。 operator和:: operator?

3 个答案:

答案 0 :(得分:20)

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

请考虑以下设置。

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

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

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

答案 1 :(得分:2)

另一种思考四点的方法' ::'是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 :(得分:1)

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