.和->区别
- 点运算符“.”应用于实际的对象,A.B则A为对象或者结构体;
- 箭头运算符“->”与一个指针对象的指针一起使用,A->B是提取A中的成员B,A只能是指向类、结构、联合的指针;
class A
{
public:
int a = 0;
};
int main()
{
A b;
A *p = &b;
b.a; //类类型的对象访问类的成员
p->a; //类类型的指针访问类的成员
}
::和:区别
- ::是运算符中等级最高的,1)全局作用域符,用法 ::name; 2)类作用域符,用法class::name;3)命名空间作用域符,用法namespace::name
- :一般用来表示继承,访问修饰符,给const和类中的对象赋值调用构造函数等。
//::用法
class A
{
public:
int test();
};
int A::test() // 类作用域,表示test是属于A的
{
return 0;
}
int a;
void test()
{
int a=::a; // 全局作用域符,给本地变量a赋值
}
//:用法
class A
{
private:
int a;
public:
A(int _a)
{
a = _a;
}
};
class B
{
private: // 访问修饰符
A a;
int b;
const int c;
public:
B(int _b,int m):a(m),c(0) // const变量必须这样初始化
{
b=_b;
}
};
class Parent : public Object {} // 继承
int main()
{
B b1(3, 4);
system("pause");
return 0;
}