四:类和对象进一步实现

4.1:静态成员和静态成员函数

     静态成员:静态成员目的是为了实现数据的共享,对象之间数据的共享,例如Person类我们创建一个对象都要统计人数,人数本身是类所有的,每个对象都知道的属性,此时我们就需要用到静态数据成员。

     声明:static int count;  

     类外初始化:int Person::count=0 //countPerson类的数据成员

     使用:Perison::count=20; //mian函数中使用,静态成员是属于类的成员,不是对象的数据成员。

    静态成员函数:

     声明:static void show_count(); // 访问同样类进行访问

    Person:show_count();

示例代码:
#include<iostream>
using namespace std;

class Student{
   private:
       string name;
       float  score;
       static int count; //人数
       static float sum; //总分
       static float avg; //平均分
   public:
       Student( string name1 , float score1 );
       static void show( Student &stu );  // 静态成员函数
       static void show_count_sum(); // 输出静态成员
};

Student::Student( string name1 , float score1  )
{
    this->name = name1;
    this->score = score1;
    ++count;
    sum = sum + score; // 总分
    avg = sum/count;
}
// 一般来说静态成员函数只是对静态数据成员进行处理,传入对象可以对对象的成员进行处理
void Student::show( Student &stu ){
    cout<<"姓名" << stu.name<<endl;
    cout<<"分数" << stu.score<<endl;
}

void Student::show_count_sum()
{
    cout<<" 人数 "<<count<<endl;
    cout<<" 总分 "<<sum<<endl;
    cout<<" 平均分 "<<avg<<endl;
}

int Student::count = 0;  //初始化静态成员
float Student::sum = 0.0;
float Student::avg = 0.0;

int main()
{
   Student stu1("Li ming",90);
   Student::show(stu1);
   Student::show_count_sum();
   Student stu2("Li Si",80);
   Student::show(stu2);
   Student::show_count_sum();
}

   

4.2:友元函数

    友元函数:友元函数不是当前类的成员函数,但是他可以访问类的所有成员,包括私有成员,公有成员,保护成员。

     友元函数不是类的公有函数,所有无法直接访问类的数据成员,可以在函数的参数传递对象来间接访问。

    friend  void show( Student &stu  ); //声明

4.3:类的组合

     类的组合:就是在一个声明中包含另一个类的对象。

  class B{

  }

  class A{

   private:

      int a;

     B b;

  }

原文地址:https://www.cnblogs.com/love-life-insist/p/12831581.html