是对具有相同属性和行为的同一类对象的抽象描述,其内部包括属性(本类的成员变量)和行为(本类的成员函数) 两个部分。类是用户自定义的数据类型。格式为
class 类名{
访问范围说明符;
成员变量;
访问范围说明符;
成员函数声明;
};
有三种: public (公有)、private (私有)、protected(保护)
类中的成员变量不能在声明时进行初始化。成员函数定义在类体内部,则默认为内联函数,也可以在类体内部声明函数,并加上inline,然后在类体外给出函数的定义,这样也是内联函数。
成员函数在类体外定义:类体内必须有函数原型,类体外函数定义前必须用“类名::”作用域运算符。作用域的功能是标识成员是属于哪个类
类名的定义遵循一般的标识符命名规则,即字母,数字和下划线的组合,大小写敏感,但不能以数字开头,也不能和系统中使用的关键字完全相同,类定义以”;”结束,大括号中的部分称为类体。
示例1:
//定义日期类
class myDate
{
public:
myDate() ;
myDate(int, int, int);
void setDate(int, int, int);
void setDate(myDate);
myDate getDate () ;
void setYear(int);
int getMonth();
void printDate() eonst;
private:
iint year, month, day;
};
//在类体外定义成员丽数
myDate::myDate()
{
year = 1970;
month = 1;
day = 1;
}
myDate::myDate(int y, int m, int d)
{
year = y;
month = m;
day = d;
}
myDate::setDate(int y, int m,int d)
{
year = y;
month = m;
day = d;
return;
}
void myDate::setDate (myDate oneD)
{
year = oneD.year ;
month = oneD.month;
day = oneD.day;
return ;
}
myDate myDate::getDate()
{
return *this;
}
void myDate::setYear(int y)
{
year = y;
return;
}
int myDate::getMonth ()
{
return month ;
}
void myDate::printDate() const //常成员两数,不能修改属性值
{
cout << year << "/" << month << "/"<< day;
return;
}
class Student
{
public:
void setstudent(string, myDate);
void setName(string);
string getName ();
void setBirthday (myDate);
myDate getBirthday();
void printStudent () const;
private:
string name ;
myDate birthday;
};
//在类体外定义成员函数
void Student::setstudent (string s, myDate d)
{
name = s;
birthday.setDate(d) ;
return ;
void Student::setName (string n)
{
name = n;
return;
}
string Student::getName ()
{
return name ;
}
void Student::setBirthday (myDate d)
{
birthday.setDate(d) ;
return;
}
myDate student::getBirthday()
{
return birthday;
}
void Student ::printStudent () const
{
cout <<"姓名:"<< name << "\t 生日:";
birthday.printDate();
cout << end1;
}
int main()
{
myDate D; //使用类来定义一个对象D
Student S;
S.setstudent("zhangsan",D); //.表示成员访问运算符
S.printstudent ();
return 0 ;
运行结果:
姓名:zhangsan 生日:1970/1/1
示例2:定义学生类Student
//学生类的定义
class Student {
private:
//姓名
string name;
//年龄
int age;
public:
void setStudent(string,int);//函数声明: 设置学生信息
string getName 0;//获取学生姓名
int getAge0;//获以学生年龄
void printStudent 0 const; //打印信息
}
//在类体外定义成员函数
void Student::setStudent (string s, int a)
{
name = s;
age = a;
}
string Student::getName()
{
return name;
}
int Student::getAge()
{
return age;
}
void Student::printStudent()
{
const[cout<<"姓名: "<<name<<" \t年龄:"<<age<<endl;
}
示例3:【程序分析题】以下程序有一处错误,请指出并改正
#include<iostream>
using namespace std;
class Student
{
int Num=0,Score=0;
public:
Student(int a, int b) {Num=a;Sorce=b;}
void get() {cout<<Num<<":" <<Score<<endl;}
};
void main()
{
Student student (1, 96) ;
student. get();
}
【正确答案】:【int Num=0,Score=0;】改为【 int Num,Score;】
【答案解析】:声明时,不能初始化