成员函数——“this指针”

21 篇文章 0 订阅
#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");

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值