::(作用域运算符)和.(成员运算符)的区别
这是在看::运算符的作用时产生的疑问。::有三个作用:
1、全局作用
2、类作用
3、名称空间
1和3不多说,在2中,其说明是:
作用域符号::的前面一般是类名称,后面一般是该类的成员名称,C++为了避免不同的类有名称相同的成员而采用作用域的方式进行区分
如:A,B表示两个类,在A,B中都有成员member。那么
A::member就表示类A中的成员member
B::member就表示类B中的成员member
成员也无非就是类中的数据成员和成员函数,我的疑问就来了。
类的对象调用成员函数是这样的:
A a;
a.member();
既然可以用A;;member;那么和a.member();有什么区别呢?
首先最直观的一点,一个是对象调用,一个是类调用。
但是不实例一个对象,而用类去调用函数,这样是可行的吗?
接下来写例子程序测试:
class A
{
public:
void fun()
{
cout<<"this is A"<<endl;
}
};
class B
{
public:
void fun()
{
cout<<"this is B"<<endl;
}
};