“ . ”、“ -> "、“ :”、“ :: ”这四个符号在写程序的时候经常使用到,然而需要尤其注意的是前两个符号,在一些编译器(譬如VS2019)中,有时候混用这两个符号,编译器也会智能修改为正确的格式;这实在是便利却不利于我们掌握它正确用法的一件事,所以在这里简述一下这些符号的用法与区别。
” . “ 和 ” ->"
这两位是易混大头了,尤其是在有指针出现的时候,它们的共同点是:
两者都是二元操作符,为 变量 . 成员 或 变量->成员 (其中成员可以是变量或函数)
而他们的区别在于:
1、A.B 的A是一个结构体或类对象,“ . ”将取该变量的成员值B
2、A->B的左边变量是一个指针,“ -> " 将取该指针指向的变量的成员值B;注:这里A只能是指向类、结构、联合的指针。
e.g.
int a;//定义一个对象;
int *b;//定义类型指针;
a.Info();//调用成员函数;
b->Info();//调用函数;
“ :” 和 “::”
后面两个符号则容易些,这里的知识也和 JAVA 相关(笔者暂时没学JAVA,学到再来补充):
1、“ :”一般用来继承
2、“ ::”是作用域运算符,A::B表作用域中名称B,A可以是名称空间、类、结构;
e.g.
std::cin;
M::f() //表示f()是类M里的成员函数;
又或者声明类A,A中声明成员函数void f(),但没有在类的声明中给出 f() 的定义,则在类外定义f()时,要写成 :
void A::f() //表示f()是类A的成员函数;
再或者表示引用成员函数及变量
e.g.
System::Math::Sqrt();
//相当于
System.Math.Sqrt();