纯虚函数与静态成员

本文探讨了C++中的纯虚函数和静态成员。纯虚函数使得类成为抽象类,不能实例化,但必须在派生类中重定义才能创建对象。静态数据成员则为所有对象共享,不占用对象的内存空间,它们在类外单独分配并初始化,实现了数据共享。静态成员函数不具备this指针,主要用于处理静态数据成员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

纯虚函数


在成员函数的形参后面写上= 0 ,则成员函数为纯虚函数。包含纯虚函数的类叫做抽象类(也叫接口类),抽象类不能实例化出对象。纯虚函数在派生类中重新定义以后,派生类才能实例化出对象。

#include <iostream>
#include <windows.h>
using namespace std;


class Person
{
    virtual void Display() = 0
    // 纯虚函数
    {
        cout << "Person" << endl;
    }
protected :
    string _name ;          // 姓名
};

class Student : public Person
{
public:
    virtual void Display()
    {
        cout << "Student" << endl;
    }
};


int main()
{
    //Person p;//“Person”: 不能实例化抽象类
    Student s;
    s.Display();

    system("pause");
    return 0;
}

静态数据成员


  1. 静态数据成员为各个对象所共享,不只是属于某一对象成员,所有对象都可引用
  2. 静态数据成员内存只占一个空间
  3. 若只声明了类未定义对象,则类的一般数据成员不占空间,只有在定义对象时,才为对象的数据成员分配空间。在为对象分配空间的时候,不分配静态数据成员的空间,静态数据成员的空间在所有对象外单独分配空间。
    只要定义了静态数据成员,即使不定义对象,也为静态数据成员分配空间,可以被引用。
  4. 如果在一个函数中定义了静态变量,在函数结束时不释放静态变量,仍保留其值,静态数据成员在程序编译时分配空间,程序结束时释放空间,静态数据成员在类外初始化。
  5. 静态数据成员实现对象间的数据共享,静态数据成员的作用域仅限于该类的作用域。

静态成员函数


  1. 静态成员函数是类的一部分,不是对象的一部分。类外调用类名 ::函数。
  2. 静态成员函数为了处理静态数据成员
  3. 静态成员函数没有this指针
  4. 静态成员函数可以直接引用本类的静态数据成员。

代码实现:

class   Person
{
public:
    Person()
    {
        ++_count;
    }
    static void show()//静态成员函数
    {
        cout << "静态成员函数" << endl;
        cout << "静态成员变量_count:" << _count << endl;
    }
protected:
    string  _name;                     // 姓名
public:
    static   int   _count;           // 统计人的个数。
};
int  Person::_count = 0;//静态成员变量初始化
class   Student : public   Person
{
protected:
    int  _stuNum;             // 学号
};
class Graduate : public   Student
{
protected:
    string  _seminarCourse;           // 研究科目
};
int main()
{
    Student   s1;
    Student   s2;
    Student   s3;
    Graduate  s4;
    Student::show();//静态成员函数使用
    cout << "人数  : " << Person::_count << endl;
    Student::_count = 0;
    cout << "人数  : " << Person::_count << endl;
    system("pause");
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值