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

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

【问题讨论】:

    标签: c++ scope-resolution


    【解决方案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,这是正确的,所以如果你有一个类的静态变量或函数,你会使用带有类名的“::”来引用它们,而如果你有一个成员函数或成员变量,你会使用“。”带有类实例的名称。
      猜你喜欢
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      • 2022-06-10
      • 1970-01-01
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      • 2012-03-09
      相关资源
      最近更新 更多