四:类和对象进一步实现
4.1:静态成员和静态成员函数
静态成员:静态成员目的是为了实现数据的共享,对象之间数据的共享,例如Person类我们创建一个对象都要统计人数,人数本身是类所有的,每个对象都知道的属性,此时我们就需要用到静态数据成员。
声明:static int count;
类外初始化:int Person::count=0 //count是Person类的数据成员
使用: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;
}