以 公有成员为准 对class进行排序

本文介绍了一个使用C++实现的学生信息类(student)及如何通过自定义比较函数实现对学生分数进行降序排序的方法。利用STL中的sort函数并提供自定义比较函数,实现了对学生分数从高到低的排序。
int  必须为  public  (目前我只是自己研究透这个)

排序准则可以重载   默认升序   重载例如:
bool compare(const student &x, const student &y)      //降序排列   compar 可以换任意名字
    {
      return   x.score > y.score;
    }
整体代码为:

#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
class student
{

    public:
    string name;
    int score;
    student(string str ,int score1)
    {
        name=str;
        score=score1;
    }
    string getname()
    {
        return name;
    }
    void disp()
    {
        cout<<"name:      "<<name<<"            score:"<<score<<endl;
    }

};
 bool compare(const student &x, const student &y)      //降序排列
    {
      return   x.score > y.score;
    }

int main()
{
    student st[]={student("王华",78),student("shilei",100),student("范兄",99),student("小屁孩",56)};


    vector <student> vec;
    for(int i=0;i<4;++i)
    vec.push_back(st[i]);

    sort(vec.begin(),vec.end(),compare);     //compare  为排序基准    名字随意
    cout<<"排序输出结果为:"<<endl;

    for(vector<student>::iterator it=vec.begin();it!=vec.end();it++)
     it->disp();
}

### C++基类公有成员在派生类中的访问权限分析 在C++中,基类的公有成员在派生类中的访问权限是否保持不变,取决于继承的方式。具体规则如下: - 如果使用 **public继承**,基类的公有成员在派生类中仍然是公有的[^2]。 - 如果使用 **protected继承**,基类的公有成员在派生类中变为受保护的(protected)[^2]。 - 如果使用 **private继承**,基类的公有成员在派生类中变为私有的(private)。 因此,在public继承的情况下,基类的公有成员在派生类中仍然可以被直接访问,并且其访问权限保持为公有。 以下是一个示例代码展示public继承时基类公有成员的行为: ```cpp #include <iostream> #include <string> using namespace std; class Base { public: void show() { cout << m_name << "," << m_a << endl; } string m_name; // 公有成员 int m_a; // 公有成员 }; class Derived : public Base { // 使用public继承 // 派生类没有新增成员 }; int main() { Derived d; d.m_a = 10; // 访问基类的公有成员m_a d.m_name = "派生类"; // 访问基类的公有成员m_name d.show(); // 调用基类的公有成员函数show() return 0; } ``` 在这个例子中,`Derived` 类通过public继承了 `Base` 类。由于是public继承,`Base` 类中的公有成员(如 `m_name` 和 `m_a`)在 `Derived` 类中仍然保持为公有,可以直接访问[^2]。 需要注意的是,如果继承方式不是public,则基类的公有成员在派生类中的访问权限会发生变化。例如,protected继承会使基类的公有成员在派生类中变为protected,而private继承会使基类的公有成员在派生类中变为private。 ### 总结 基类的公有成员在派生类中的访问权限是否保持不变,完全依赖于继承的方式。对于public继承,基类的公有成员在派生类中仍然是公有的[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值