一、类的声明
1、什么是类类型
在C++中对象的类型称为类(class),用来表示一类具有共同属性和行为的类型。例如:人类,狗类,动物类,哺乳动物类等等。在C++中一般是先声明一个类类型,然后用这个类类型去定义多个对象,所以,对象就是类类型的一个实例,或者说是类类型的一个实例化的变量。
类类型是抽象出来的,所以类类型跟C++中的其他类型一样,不占用内存空间,而对象就是类类型的实例,是真正的变量,所以是占用存储空间的。
2、类类型的声明
C++中声明一个类类型跟声明一个结构体类型很像。例如,咱们之前讲解的声明一个结构体的类型如下:
1. struct Student
2. {
3. string name;
4. int num;
5. char sex;
6. int age;
7. };
一个学生的结构体类型Student,包含学生的一些属性,如:姓名、学号、性别、年龄。基于这个结构体类型我们改一下,改成生成一个类类型:
1. class Student
2. {
3. string name;
4. int num;
5. char sex;
6. int age;
7. };
大家看到了吗?声明一个学生的类类型和声明一个学生的结构体类型很像很像,表面上看就差了一个关键字:struct 和 class,另外,C++中对结构体在基于C语言中的重要扩充就是可以添加函数了,类class也是一样,例如:
1. class Student
2. {
3. string name;
4. int num;
5. char sex;
6. int age;
7.
8. void print_name()
9. {
10. cout << "name = " << name << endl;
11. }
12. };
//class类里定义的参数默认为private
备注:这里面在给大家说说有关属性和方法的名字的问题。
class类中的name,num,sex 之类的按照咱们上节课的只是可以叫做属性,print_name 这个函数呢,可以叫做行为或者方法。
这里面交给大家一些更通用的叫法:name,num,sex 之类的又可以叫做成员变量,print_name 可以叫做成员函数。
3、程序限定访问符
C++针对类的成员,设定了三种方式的访问限定符:public、private、protected(用的不多)
public:意为共有的,公开的,公用的 成员,既可以被本类中的成员函数引用,也可以被类的作用域的其他函数所引用,即从类的外部是可以调用的;
例如,我家的房子就好比是一个类,如果来客人了,那么我可能招呼客人到客厅,这个客厅就是public类型的成员,外部可以访问,客人也可以到客厅中喝水,看电视等等;
private:意为私有的,私生的 成员,只能被本类的成员函数所引用,类外部不能调用(友元类可以,这个以后说明),
例如,我家的房子就好比是一个类,卧室就是private类型的成员,是一个相对隐私的地方。如果来客人了,我不希望客人访问我的卧室,除非经过我的允许(让成员函数去访问);
protected:意为受保护的成员,不能被类外访问,这点类似private,但是可以被派生类的成员函数访问,有关派生类的说明,以后会讲解。
附:在 class 中,public、private、protected 可以出现多次,也没有先后顺序之分,例如:
1. class Student
2. {
3. public:
4. string name;
5. int num;
6. int age;
7.
8. private:
9. char sex;
10.
11. public:
12. void print_name()
13. {
14. cout << "name = " << name << endl;
15. }
16. };
在谁后面,就是哪种访问权限
5、struct与class关键字的区别
上面已经说过了,在C++中已经对struct进行了扩充,不仅可以声明成员变量,还可以声明成员函数,class关键字本身就是从struct发展而来的,所以struct支持的,class都支持。那么在C++中他们有什么异同呢?
最重要的一个区别就是:class默认的成员访问限定符是private,struct默认的成员访问限定符是public,所以引用class成员变量要在变量前定义为public。
6、实例
/*
功能:输入学生信息;打印学生信息
参数:@name;@sex;@nume
*/
#include<iostream>
using namespace std;
#include<string>
class cstudent
{
private:
string name;
char sex;
int num;
public:
void get_message(int n)
{
cout << "请输入第" << (n+1) << "位学生信息:" << endl;
cin >> name >>sex >> num;
}
void print_message()
{
cout << name << "---" << sex << "---" << num << endl;
}
};
int main()
{
cstudent stu[3];
for(int i = 0;i < 3;i++)
{
stu[i].get_message(i);
}
cout << "输入学生信息如下:" << endl;
for(int i = 0;i < 3;i++)
{
stu[i].print_message();
}
return 0;
}
** 自用资料整理
参考https://www.cctry.com/thread-289496-1-1.html **