47 C++ - 继承中的静态成员特性

简介: 47 C++ - 继承中的静态成员特性

静态成员函数和非静态成员函数的共同点:

  1. 他们都可以被继承到派生类中。
  2. 如果重新定义一个静态成员函数,所有在基类中的其他重载函数会被隐藏。
  3. 如果我们改变基类中一个函数的特征,所有使用该函数名的基类版本都会被隐藏。
    静态成员函数不能是虚函数(virtual function).
class Base{
public:
  static int getNum(){ return sNum; }
  static int getNum(int param){
    return sNum + param;
  }
public:
  static int sNum;
};
int Base::sNum = 10;
class Derived : public Base{
public:
  static int sNum; //基类静态成员属性将被隐藏
#if 0
  //重定义一个函数,基类中重载的函数被隐藏
  static int getNum(int param1, int param2){
    return sNum + param1 + param2;
  }
#else
  //改变基类函数的某个特征,返回值或者参数个数,将会隐藏基类重载的函数
  static void getNum(int param1, int param2){
    cout <<  sNum + param1 + param2 << endl;
  }
#endif
};
int Derived::sNum = 20;


目录
相关文章
|
8天前
|
C++
C++(二十)继承
本文介绍了C++中的继承特性,包括公有、保护和私有继承,并解释了虚继承的作用。通过示例展示了派生类如何从基类继承属性和方法,并保持自身的独特性。此外,还详细说明了派生类构造函数的语法格式及构造顺序,提供了具体的代码示例帮助理解。
|
24天前
|
安全 NoSQL Redis
C++新特性-智能指针
C++新特性-智能指针
|
29天前
|
安全 Java 编译器
|
2月前
|
存储 Java 程序员
【c++】继承深度解剖
【c++】继承深度解剖
25 1
|
2月前
|
存储 编译器 数据安全/隐私保护
|
2月前
|
Java C++ 运维
开发与运维函数问题之C++中有哪些继承方式如何解决
开发与运维函数问题之C++中有哪些继承方式如何解决
21 0
|
2月前
|
存储 编译器 C++
C++基础知识(六:继承)
多态是面向对象编程的四大基本原则之一,它让程序能够以统一的接口处理不同的对象类型,从而实现了接口与实现分离,提高了代码的灵活性和复用性。多态主要体现在两个层面:静态多态(编译时多态,如函数重载)和动态多态(运行时多态,主要通过虚函数实现)。
|
2月前
|
存储 安全 编译器
|
8天前
|
存储 编译器 C++
C ++初阶:类和对象(中)
C ++初阶:类和对象(中)
|
8天前
|
C++
C++(十六)类之间转化
在C++中,类之间的转换可以通过转换构造函数和操作符函数实现。转换构造函数是一种单参数构造函数,用于将其他类型转换为本类类型。为了防止不必要的隐式转换,可以使用`explicit`关键字来禁止这种自动转换。此外,还可以通过定义`operator`函数来进行类型转换,该函数无参数且无返回值。下面展示了如何使用这两种方式实现自定义类型的相互转换,并通过示例代码说明了`explicit`关键字的作用。