#include <iostream>
class A
{
static int a;
int b;
public:
//成员函数:有一个隐形的“this”指针
void f1()//A* this
{
this->b;
f2();
}
//静态成员函数// 静态成员函数没有“this”指针
//不能访问成员变量以及成员函数,只能访问静态的成员变量和静态的成员函数
static void f2()
{
//f1();
a;
}
};
int A::a = 0;
void main()
{
A::f2();
A a;
a.f2();
//函数指针不能指向类的成员函数
//void (*p)() = a.f1;
//函数指针可以指向类的静态成员函数
void (*p)() = A::f2;
system("pause");
}
class STU
{
char name[32];
int id;
int age;
};
void test()
{
STU stu[5];
//按照姓名进行排序
STU::sort(stu,5,STU::sortByName);
for (int i = 0;i < 5; ++i)
std::cout<<stu[i].name<<stu[i].id<<stu[i].age<<"\n";
//按照年龄进行排序
STU::sort(stu,5,STU::sortByAge);
//按照ID进行排序
STU::sort(stu,5,STU::sortByID);
}
---------//正解
#include <iostream>
class STU
{public:
char name[32];
int id;
int age;
static void sort(STU* arr, int len, bool (*bj)(STU&,STU&) )
{
for (int i = len-1; i > 0; --i)
{
for (int j = 0;j < i; ++j)
{
if ((*bj)(arr[j] , arr[j+1]))
{
STU temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
static bool sortByName(STU& a,STU& b)
{
return strcmp(a.name,b.name) == 1;
}
static bool sortByID(STU& a,STU& b)
{
return a.id > b.id;
}
static bool sortByAge(STU& a,STU& b)
{
return a.age > b.age;
}
};
void main()
{
STU stu[5];
strcpy(stu[0].name,"abc");
stu[0].id = 1;
stu[0].age = 40;
strcpy(stu[1].name,"def");
stu[1].id = 2;
stu[1].age = 54;
strcpy(stu[2].name,"你好");
stu[2].id = 4;
stu[2].age = 2;
strcpy(stu[3].name,"123456");
stu[3].id = 4;
stu[3].age = 65;
strcpy(stu[4].name,"87wef");
stu[4].id = 876;
stu[4].age = 34;
//STU::sort(stu, 5, STU::sortByName);
//STU::sort(stu, 5, STU::sortByID);
STU::sort(stu, 5, STU::sortByAge);
for (int i = 0; i < 5; ++i)
{
std::cout<<stu[i].name<<", " <<stu[i].id<<", " <<stu[i].age<<std::endl;
}
system("pause");
}