偷偷拿来记录一下萌新的cs路——day 35
#include<iostream>
using namespace std;
class Base {
public:
Base() {
m_A = 100;
}
void func() {
cout << "Base_func()调用" << endl;
}
void func(short a) {
cout << "Base_func(short a)调用" << endl; // 函数重载
}
short m_A;
};
class Son : public Base {
public:
Son() {
m_A = 200;
}
void func() {
cout << "Son_func()调用" << endl;
}
short m_A;
};
void test02() {
Son s;
s.func();
s.Base::func();
// 子类出现父类同名成员函数,隐藏父类中所有同名成员函数,若要访问需加作用域
s.Base::func(100);
}
void test01() {
Son s;
cout << "Son 下 m_A = " << s.m_A << endl;
// 通过子类对象访问同名父类成员 需作用域
cout << "Base 下 m_A = " << s.Base::m_A << endl;
}
int main() {
test01();
test02();
return 0;
}
运行结果
继承同名静态成员处理
静态成员变量与静态成员函数见day25文章静态成员变量与静态成员函数https://blog.csdn.net/weixin_45717809/article/details/125686912?spm=1001.2014.3001.5501
#include<iostream>
using namespace std;
class Base {
public:
static void func() {
cout << "Base - static void func()" << endl;
}
static int m_A;
};
int Base::m_A = 100; // 类内声明,类外初始化
class Son : public Base {
public:
static void func() {
cout << "Son - static void func()" << endl;
}
static int m_A;
};
int Son::m_A = 200;
// 同名静态成员属性
void test01() {
cout << "通过对象访问: " << endl;
Son s;
cout << "Son 下 m_A = " << s.m_A << endl;
cout << "Base 下 m_A = " << s.Base::m_A << endl;
cout << "通过类名访问: " << endl;
cout << "Son 下 m_A = " << Son::m_A << endl;
cout << "Base 下 m_A = " << Son::Base::m_A << endl;
// 第一个::代表通过类名访问,第二个::代表访问父类作用域下
}
// 同名静态成员函数
void test02() {
// 通过对象访问
cout << "通过对象访问: " << endl;
Son s;
s.func();
s.Base::func();
// 通过类名访问
cout << "通过类名访问: " << endl;
Son::func();
Son::Base::func();
}
int main() {
test01();
test02();
return 0;
}
运行结果