一、类的声明

本文详细介绍了C++中类的声明、访问限定符(public, private, protected)的概念,以及struct与class的区别。通过实例展示了如何定义类类型、设置成员变量和成员函数,并重点讨论了不同访问权限的应用。
摘要由CSDN通过智能技术生成

一、类的声明

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 **

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值