zoukankan      html  css  js  c++  java
  • 四:类和对象进一步实现

    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;

      }

  • 相关阅读:
    VS2005 中关于“LC.EXE已退出,代码为 1”的错误解决方法。
    由于目标机器积极拒绝,无法连接。
    What is Android?
    利用批处理文件和任务计划实现Oracle数据库的自动备份
    就差了一点点....
    由Login.aspx引发编译器错误的解决方法
    都是补丁惹的祸...
    终于结束了
    GIS当然可以很酷
    rar.exe命令行参数与示例
  • 原文地址:https://www.cnblogs.com/love-life-insist/p/12831581.html
Copyright © 2011-2022 走看看