xxxx217 2022-03-07 11:08 采纳率: 75%
浏览 26
已结题

c++ 类与对象的定义和类成员的访问控制

1)定义一个名为CPerson的类,该类有以下属性:name、sex和age,请用C++语言定义这个类,并为上述属性定义相应的成员函数(如:setName(const char *)和getName()),要求能够通过相应的成员函数设置和获取姓名、性别和年龄;
(2)定义类CPerson的对象测试调用成员函数;
(3)合理设置所有的属性和成员函数的访问控制类型(private或public);
有人教教我要怎么做吗😭还有做这个的时候需要做包含多个文件的项目吗

  • 写回答

3条回答 默认 最新

  • 关注

    用多个文件或者当文件都是可以的。
    如果用多个文件,就新建类的.h文件和cpp文件,分别存放类的声明和实现即可。然后单独写一个测试程序(如main.cpp)。
    如果只用1个文件,把.h文件和.cpp文件的内容放在一个文件中就可以了(注意类的声明部分需要放main函数前面)
    (1)多文件写法
    CPerson.h文件:

    #ifndef _CPERSON_H
    #define _CPERSON_H
    
    #include <string>
    using namespace std;
    class CPerson
    {
    private:
        string mName;
        string mSex;
        int mAge;
    public:
        CPerson();
        CPerson(string name,string sex,int age);
    
        //获取和设置属性
        string getName();
        void setName(string name);
    
        string getSex();
        void setSex(string sex);
    
        int getAge();
        void setAge(int age);
    
        //显示
        void show();
    };
    
    
    #endif
    
    

    CPerson.cpp文件:

    #include "Cperson.h"
    
    
    CPerson::CPerson()
    {
        mName = "";
        mSex="";
        mAge = 0;
    }
    
    CPerson::CPerson( string name,string sex,int age )
    {
        mName = name;
        mSex=sex;
        mAge = age;
    }
    
    std::string CPerson::getName()
    {
        return mName;
    }
    
    void CPerson::setName( string name )
    {
        mName = name;
    }
    
    
    std::string CPerson::getSex()
    {
        return mSex;
    }
    
    void CPerson::setSex( string sex )
    {
        mSex = sex;
    }
    
    int CPerson::getAge()
    {
        return mAge;
    }
    
    void CPerson::setAge(int age)
    {
        mAge = age;
    }
    
    //显示信息
    void CPerson::show()
    {
        cout << "姓名:"<<mName <<" 性别:"<<mSex <<" 年龄:"<<mAge<<endl;
    }
    
    

    测试程序(main.cpp):

    #include "Cperson.h"
    #include <iostream>
    using namespace std;
    
    int main()
    {
        CPerson ps1;
        ps1.setName("张三");
        ps1.setSex("男");
        ps1.setAge(22);
        ps1.show();
    
        CPerson ps2("李四","男",33);
        ps2.show();
    
        return 0;
    }
    
    

    (2)单个文件,写法如下:

    #include <string>
    #include <iostream>
    using namespace std;
    
    
    class CPerson
    {
    private:
        string mName;
        string mSex;
        int mAge;
    public:
        CPerson();
        CPerson(string name,string sex,int age);
    
        //获取和设置属性
        string getName();
        void setName(string name);
    
        string getSex();
        void setSex(string sex);
    
        int getAge();
        void setAge(int age);
    
        //显示
        void show();
    };
    
    
    
    CPerson::CPerson()
    {
        mName = "";
        mSex="";
        mAge = 0;
    }
    
    CPerson::CPerson( string name,string sex,int age )
    {
        mName = name;
        mSex=sex;
        mAge = age;
    }
    
    std::string CPerson::getName()
    {
        return mName;
    }
    
    void CPerson::setName( string name )
    {
        mName = name;
    }
    
    
    std::string CPerson::getSex()
    {
        return mSex;
    }
    
    void CPerson::setSex( string sex )
    {
        mSex = sex;
    }
    
    int CPerson::getAge()
    {
        return mAge;
    }
    
    void CPerson::setAge(int age)
    {
        mAge = age;
    }
    //
    void CPerson::show()
    {
        cout << "姓名:"<<mName <<" 性别:"<<mSex <<" 年龄:"<<mAge<<endl;
    }
    
    
    
    int main()
    {
        CPerson ps1;
        ps1.setName("张三");
        ps1.setSex("男");
        ps1.setAge(22);
        ps1.show();
    
    
        CPerson ps2("李四","男",33);
        ps2.show();
    
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月15日
  • 已采纳回答 3月7日
  • 创建了问题 3月7日

悬赏问题

  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用