C++对象静态重名内容调用
1.静态重名变量访问
讲解都在注释里了
#include "iostream"
using namespace std;
//类的静态变量共享一个,他是属于FATHER这个类的总的
class FATHER {
public:
static int a;//类内声明
};
int FATHER::a=10;//类外初始化
class SON : public FATHER {
public:
static int a;//类内声明
};
int SON::a=20;//类外初始化
int main() {
SON son;
//通过类名访问
cout << son.a << endl;
cout << son.FATHER::a << endl;
//通过对象访问
cout << SON::a << endl;
//注意下面这句两个::含义不同,第一个::的意思时类SON底下的内容,第二个::时声明父类作用域
cout << SON::FATHER::a << endl;
}
输出结果
20
10
20
10
2.静态重名函数访问
讲解都在注释里了
#include "iostream"
using namespace std;
class FATHER {
public:
static void fun(void){
cout << "FATHER-STATIC-FUN" << endl;
}
};
class SON : public FATHER {
public:
static void fun(void){
cout << "SON-STATIC-FUN" << endl;
}
};
int main() {
SON son;
//通过类名访问
son.fun();
son.FATHER::fun();
//通过对象访问
SON::fun();
//注意下面这句两个::含义不同,第一个::的意思时类SON底下的内容,第二个::时声明父类作用域
SON::FATHER::fun();
}
输出:
SON-STATIC-FUN
FATHER-STATIC-FUN
SON-STATIC-FUN
FATHER-STATIC-FUN
父类中函数重载问题:
同样的函数重载问题,父子类出现同名函数编译器会屏蔽掉父类中所有该名字函数,调用父类这是只能通过声明父类作用域,具体可见上篇博客,原理相同。