点运算符和范围解析运算符有啥区别
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,这是正确的,所以如果你有一个类的静态变量或函数,你会使用带有类名的“::”来引用它们,而如果你有一个成员函数或成员变量,你会使用“。”带有类实例的名称。以上是关于点运算符和范围解析运算符有啥区别的主要内容,如果未能解决你的问题,请参考以下文章