继承中的静态成员函数
2017-05-02 10:32
148 查看
1.静态成员函数也可以被继承。
2.如果在子类重新定义一个静态成员函数,所有在基类的其他重载函数会被隐藏。
3.改变基类中一个函数的特征,所有使用该函数名的基类版本都会被隐藏。
class dad
{
public:
static int a;
static int geta()
{
return a;
}
static int geta(int b)
{
return a + b;
}
};
int dad::a = 99;
class son :public dad
{
public:
static int a;//基类静态成员的属性将会被隐藏
static int geta(int b, int c)//重新定义一个函数,基类中重载的函数被隐藏
{
return a + b + c;
}
};
int son::a = 66;
class girl:public dad
{
public:
static int a;//基类静态成员的属性将会被隐藏
static void geta(int b, int c)//改变基类函数的某个特征,返回值或者参数个数,将会隐藏基类重载的函数
{
cout << a + b + c << endl;
}
};
int girl::a = 44;
void test()
{
son s;
girl g;
cout << s.a << endl;//输出66
cout << s.geta(1, 2) << endl;;//只能访问son类中的geta,不能访问父类中的geta
cout << g.a << endl;//输出44,只能访问girl中的a
g.geta(3, 4);//只能访问girl中的geta
}
2.如果在子类重新定义一个静态成员函数,所有在基类的其他重载函数会被隐藏。
3.改变基类中一个函数的特征,所有使用该函数名的基类版本都会被隐藏。
class dad
{
public:
static int a;
static int geta()
{
return a;
}
static int geta(int b)
{
return a + b;
}
};
int dad::a = 99;
class son :public dad
{
public:
static int a;//基类静态成员的属性将会被隐藏
static int geta(int b, int c)//重新定义一个函数,基类中重载的函数被隐藏
{
return a + b + c;
}
};
int son::a = 66;
class girl:public dad
{
public:
static int a;//基类静态成员的属性将会被隐藏
static void geta(int b, int c)//改变基类函数的某个特征,返回值或者参数个数,将会隐藏基类重载的函数
{
cout << a + b + c << endl;
}
};
int girl::a = 44;
void test()
{
son s;
girl g;
cout << s.a << endl;//输出66
cout << s.geta(1, 2) << endl;;//只能访问son类中的geta,不能访问父类中的geta
cout << g.a << endl;//输出44,只能访问girl中的a
g.geta(3, 4);//只能访问girl中的geta
}
相关文章推荐
- 继承与静态成员函数
- 空类、含静态成员的类、普通类(不含虚函数、虚继承)的sizeof大小
- 静态变量和静态成员函数的继承
- c++子类能从父类中继承父类的静态成员函数吗
- 静态成员(成员函数+数据成员)继承中同样存在覆盖基类,而非共存子类
- C++类静态数据成员与类静态成员函数
- C++中类的静态数据成员函数解析
- Thinking in C++读书笔记--9.3静态成员函数
- C++中类的静态数据成员函数解析
- C++类静态数据成员与类静态成员函数
- C++中使用非静态成员函数代替全局函数
- 静态成员函数
- C++类静态数据成员与类静态成员函数
- 类的静态方法(函数)中为什么不能调用非静态成员(属性)?
- 多线程函数和静态线程函数调用类成员非静态变量和函数的问题
- C++中静态成员函数访问非静态成员变量
- 通过指针访问类的静态成员函数
- C++静态数据成员和静态成员函数
- 静态成员函数不能调用普通成员变量
- C++中类的静态数据成员函数解析