1.类和对象的关系

    • 每个实体都是对象,每个对象都属于一个特定的类型。
    • 在C++中对象的类型称为类,类代表了某一批对象的共性和特征。
    • 类是对象的抽象,而对象是类的具体实例。
    • 在C++中也是先声明一个类类型,然后用它去定 义若干个同类型的对象。对象就是类类型的一个 变量。
    • 类是抽象的,不占用内存,而对象是具体的,占用存储空间。

    2.声明类类型

    • 类是用户自己指定的类型,必须根据需要进行声明,或者使用别人已设计好的类。
    • 类类型声明一般格式:

    class 类名
    {
    private:
    私有数据和成员函数;
    public:
    公用的数据和成员函数;
    protected:
    成员数据;
    成员函数;
    };

    • private和public称为成员访问限定符;
    • 还有一种成员访问限定protected(受保护的),受保护的成员不能被类外访问,但可以被派生类的成员函数访问。
    • 声明为private的成员和声明为public的成员的次序任意。
    • 如果在类的定义中既不指定private,也不指定public,则 系统就默认为是私有的。
    • 在一个类体中,关键字private和public可以分别出现多次。 每个部分的有效范围到出现另一个访问限定符或类体结束 时(最后一个右花括号)为止。
    • C++程序多数先写public部分,把private部分放在类体的 后部。这样可以使用户将注意力集中在能被外界调用的成 员上,使阅读者的思路更清晰一些。
      • C++标准本身不提供现成的类的名称、结构和内容。
    • 声明一个类:
      1. class Student //以class开头
      2. {
      3. int num;
      4. char name[20];
      5. char sex; //以上3行是数据成员
      6. void display( ) //这是成员函数
      7. {
      8. cout<<″num:″<<num<<endl;
      9. cout<<″name:″<<name<<endl;
      10. cout<<″sex:″<<sex<<endl; //以上4行是函数中的操作语句
      11. }
      12. };
      13. Student stud1stud2; //定义了两个Student 类的对象
    • 不能把类中的全部成员与外界隔离,一般是把数据隐蔽起来,而把成 员函数作为对外界的接口。


        1. class Student //声明类类型
        2. {
        3. private: //声明以下部分为私有的
        4. int num;
        5. char name[20];
        6. char sex;
        7. public: //声明以下部分为公用的
        8. void display( )
        9. {cout<<″num:″<<num<<endl;
        10. cout<<″name:″<<name<<endl;
        11. cout<<″sex:″<<sex<<endl; }
        12. };
        13. Student stud1stud2; //定义了两个Student 类的对象
    • / | | 私有成员和私有函数 | 公有成员和公有函数 | 保护成员和保护函数 | | —- | —- | —- | —- | | 类内函数 | 可以调用 | 可以调用 | 可以调用 | | 类外函数 | 不可调用 | 可以调用 | 不可调用 |

    3.定义对象的方法

    • 先声明类类型,然后再定义对象,如:

      1. Student stud1stud2; //Student是已经声明的类类型
    • 声明类类型后,定义对象有两种形式:

      • class 类名 对象名

        1. class Student stud1,stud2;
      • 类名 对象名

        1. Student stud1stud2;
    • 声明类类型的同时定义对象

      1. class Student //声明类类型
      2. { public: //先声明公用部分
      3. void display( )
      4. {cout<<″num:″<<num<<endl;
      5. cout<<″name:″<<name<<endl;
      6. cout<<″sex:″<<sex<<endl;
      7. }
      8. private: //后声明私有部分
      9. int num;
      10. char name[20];
      11. char sex;
      12. }stud1stud2; //定义了两个Student类的对象
    • 不出现类名,直接定义对象 ```cpp class //无类名 {private: //声明以下部分为私有的 ┆
      public: //声明以下部分为公用的 ┆
      }stud1,stud2; //定义了两个无类名的类对象

    1. - 在定义一个对象时,编译系统会为这个对象分配存储空间,以存放对象中的成员。
    2. 4.类和结构体类型的异同
    3. - C++运行用struct来定义一个类类型
    4. ```cpp
    5. struct Student //用struct来声明一个类类型
    6. {private: //声明以下部分为私有的
    7. int num; //以下3行为数据成员
    8. char name[20];
    9. char sex;
    10. public: //声明以下部分为公用的
    11. void display( ) //成员函数
    12. {cout<<″num:″<<num<<endl;
    13. cout<<″name:″<<name<<endl;
    14. cout<<″sex:″<<sex<<endl; }
    15. };
    16. Student stud1,stud2; //定义了两个Student类的对象
    • 说明:
      • 用struct声明的结构体类型实际上也是类。
      • 用struct声明的类,如果对其成员不作声明,系统将其默 认为public。
      • 如果希望成员是公用的,使用struct比较方便,如果希望 部分成员是私有的,宜用class。
      • 尽量使用class来建立类,写出完全体现C++风格的程 序。