在学习C++的过程中我们经常会用到.和->,::和:和->,在此整理一下这些常用符号的区别。
1、A.B则A为对象或者结构体;
2、A->B则A为指针,->是成员提取,A->B是提取A中的成员B,A只能是指向类、结构、联合的指针;
3、::是作用域运算符,A::B表示作用域A中的名称B,A可以是名字空间、类;
4、:一般用来表示继承;
1、->是指针指向其成员的运算符。
. 是结构体的成员运算符,是对象专用的。
最大的区别是->前面放的是指针,而.前面跟的是结构体变量。
例1:
struct A
{
int a;
int b;
};
A *point = malloc(sizeof(struct A));
point->a = 1;
A object;
object.a = 1;
例2:
#include<stdio.h>
struct role
{
char name[8];
int level;
int HP;
int MP;
int gold;
};
void main()
{
struct role *w;
char str[]="kuangzhan";
w->name = str;
w->level = 46;
w->HP = 3100;
w->MP = 3100;
w->gold = 475233;
}
2、::是域作用符,是各种域性质的实体(比如类(不是对象)、名字空间等)调用其成员专用的。 (如果有个局部变量与全局变量同名(假设都是int a;),默认调用的 a 是局部变量,如果要访问全局变量a,就要这么写“::a”。使用域作用符来加以区别;前面没写具体的域名,就是指默认域)
例1:
struct A
{
int InnerPara;
static int StPara;
} a;
a访问时用“.”,如a.InnerPara;A访问用“::”,如A::StPara;
例2:
#include<iostream.h>
int Num=3;
class aa{
public :
void a1();
static void a2();
private:
static int id;
};
void aa::a1()
{
cout<<"a1"<<endl;
}
void aa::a2()
{
cout<<id<<endl;
}
int aa::id=14;
void main()
{
aa a;
int Num=4;
cout<<::Num<<endl;
cout<<Num<<endl;
a.a1();
a.a2();
aa::a2();
}
|