类是用户自定义的一种数据类型,特殊之处在于和一般的数据类型相比,它不仅包含相关的数据,还包含能对这些数据进行处理的函数。类中包含的数据和函数统称为成员,数据称为成员数据,函数称为成员函数。
class 类名
{
private:
私有成员数据和成员函数;//私有成员只能被本类的成员函数访问
protected:
保护成员数据和成员函数;
public:
公有成员数据和成员函数;
};
#include<bits/stdc++.h>
using namespace std;
class Student
{
private:
char name[20];
char sex;
int age;
public:
void set(char c[20],char ch,int n)
{
strcpy(name,c);
sex=ch;
age=n;
}
void display()
{
cout<<"name:"<<name<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"age:"<<age<<endl;
}
};
int main()
{
Student s1,s2;
s1.set("Jackson",'m',20);//不能使用s1.age=20;原因是数据成员age是私有的,在类外
s1.display(); //无法直接访问到类中的私有数据成员
s2=s1;//同类型的对象之间可以相互赋值
s2.display();
return 0;
}
输出:
name:Jackson
sex:m
age:20
name:Jackson
sex:m
age:20
成员函数函数体的定义除了可以定义在类体中,还可以在类体外进行定义。
#include<bits/stdc++.h>
using namespace std;
class Student
{
private:
char name[20];
char sex;
int age;
public:
void set(char c[20],char ch,int n);
void display();
};
void Student::set(char c[20],char ch,int n)
{
strcpy(name,c);
sex=ch;
age=n;
}
void Student::display()//必须在成员函数名前加上类名和作用域运算符::
{
cout<<"name:"<<name<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"age:"<<age<<endl;
}
int main()
{
Student s1,s2;
s1.set("Jackson",'m',20);
s1.display();
s2=s1;
s2.display();
return 0;
}
输出:
name:Jackson
sex:m
age:20
name:Jackson
sex:m
age:20