目录
类也是一种复杂的自定义数据类型,它将不同的数据类型和数据操作封装在一起.和结构体不同的是结构体只是封装数据,没有封装数据操作.
类中的数据也叫数据成员,数据的操作也叫成员函数.
class是定义类的关键字,类的成员在权限上分为,公有(public),私有(private)和保护(protected)三种
C++中类的成员默认是private属性(私有的),外部不能随意访问.结构体中可以认为是public属性(公有的),外部可以随意访问.
封装:对内数据开放,对外提供接口.
class 类名
{
成员权限:
数据成员或成员函数说明
成员权限:
数据成员或成员函数说明
}
学生类
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
using namespace std;
class Student //学生类
{
public: //公有成员,类外可以随意访问
//说话
void studentSpeak()const
{
cout << "我是" << m_name << ",今年" << m_age << ",这次考试得分" << m_score << endl;
}
//改变分数
void studentSetScore(int score) //对外提供接口,可以修改年龄
{
m_score = score;
}
//初始化
void studentInit(const char* name, int age, int score)
{
m_name = new char[64];
strcpy(m_name, name);
m_age = age;
m_score = score;
}
//释放空间
void studentDelete()
{
delete[]m_name;
}
private: //私有成员,类内不能随意访问(也就是在类外不能随意更改我们的数据)
char* m_name;
int m_age;
int m_score;
};
int main()
{
//定义一个类(student)对象(s)数组
Student s[3];
s[0].studentInit("小明", 18, 70);
//s[0].m_socre = 100; //error 私有数据成员类外不能随意访问,固不能修改
cout << "改变分数之前" << endl;
s[0].studentSpeak();
s[0].studentSetScore(80);
cout << "改变分数之后" << endl;
s[0].studentSpeak();
cout << endl;
s[1].studentInit("小华", 19, 80);
cout << "改变分数之前" << endl;
s[1].studentSpeak();
s[1].