一.类的定义
class 类名
{
private:
成员属性或成员函数
protected:
成员属性或成员函数
public:
成员属性或成员函数
};
补充:
(1)class是声明类的关键字,class后跟类名。类名一般首字母大写。
(2)类包括成员属性和成员函数。成员属性代表对象的属性;成员函数实现对象的行为。
(3)private、protected和public关键字称为访问权限符,它规定了类中成员的访问属性。这3个关键字可以按任意顺序出现。默认时为私有的(private)。
【例3-1】 声明一个学生类。
分析:每个学生都有学号、姓名和性别;对于学生的基本操作有输入信息、输出信息等。因此,对应的学生类定义如下:
class Student //声明类
{
private: //访问权限:私有成员
string m_id; //属性,数据成员,表示学号
string m_name; //属性,数据成员,表示姓名
string m_sex; //属性,数据成员,表示性别
public: //访问权限:公有成员
Student(); //行为,成员函数的原型声明,表示构造函数
void input(); //行为,成员函数的原型声明,表示输入学生信息
void print(); //行为,成员函数的原型声明,表示输出学生信息
}; //类声明结束
二. 成员访问权限
可以定义3种不同的访问权限符,分别为public(公有类型)、private(私有类型)和protected(保护类型)
public(公有类型)
public 声明成员为公有成员。完全公开。都可以访问
class Human
{
public: //声明类的公有成员
int high; //身高
int weight;//体重
void GetHigh()
{
cout<<"身高:"<<high<<endl;
}
void GetWeight()
{
cout<<"体重:"<<weight<<endl;
}
};
int main()
{
Human zhangsan; //定义类的对象
zhangsan.high=175; //通过对象访问类的公有数据成员
zhangsan.weight=70; //通过对象访问类的公有数据成员
zhangsan.GetHigh(); //通过对象访问类的公有成员函数
zhangsan.GetWeight(); //通过对象访问类的公有成员函数
return 0;
}
private(私有类型)
private声明成员为私有成员。该级别的成员只能被它所在类中的成员函数和该类的友元函数访问。
class Human
{
private: //声明类的私有数据成员
int high; //身高
int weight;//体重
public: //声明类的公有成员函数
void SetHigh(int h)
{
high = h; //类的成员函数访问类的私有数据成员
}
void GetHigh()
{
cout << "身高:" << high << endl; //类的成员函数访问类的私有数据成员
}
void SetWeight(int w)
{
weight = w; //类的成员函数访问类的私有数据成员
}
void GetWeight()
{
cout << "体重:" << weight << endl; //类的成员函数访问类的私有数据成员
}
};
int main()
{
Human lisi; //定义类的对象
//lisi.high=185; //错误,不能通过对象访问类的私有数据成员
//lisi.weight=90; //错误,不能通过对象访问类的私有数据成员
lisi.SetHigh(180); //通过对象访问类的公有成员函数给high赋值
lisi.SetWeight(80); //通过对象访问类的公有成员函数给Weight赋值
lisi.GetHigh(); //通过对象访问类的公有成员函数
lisi.GetWeight(); //通过对象访问类的公有成员函数
return 0;
}
从上例可知,private成员只能在类的成员函数中使用。在类外,不能通过对象访问,如lisi.high=185;和lisi.weight=90;都是错误的。
protected(保护类型)
protected声明成员为保护成员。具有这个访问控制级别的成员,外界是无法直接访问的。它只能被它所在类及从该类派生的子类的成员函数及友元函数访问。它和private的区别只在类继承时体现。
三.成员函数实现方式
类的成员函数也是函数的一种。它与一般函数的区别是:它属于一个特定的类,是类的一个成员。
在使用类的成员函数时,要注意它的访问权限(它能否被访问),以及它的作用域(类函数能在什么范围内被访问)。
类的成员函数的定义方式有两种。
-
第一种是在类内直接进行定义。这种方式一般用在代码比较少的成员函数中,并自动成内联函数。
-
第二种是在类中进行函数说明,在类外进行函数定义。这种情况通常用在代码较多的类的成员函数上。在定义函数时,必须用作用域符“::”表明函数所属的类。
形式如下:
返回类型 类名::函数名(参数列表)
{
//函数体
}
例如定义时钟类:
#include <iostream>
using namespace std;
class Clock
{
private:
int hour; //小时
int minute;//分钟
int second;//秒
public:
void setTime(int h,int m,int s); //类中声明,类外定义
void showTime() //类中定义函数
{
cout<<hour<< "时"<<minute<<"分"<<second<<"秒"<<endl;
}
};
void Clock::setTime(int h,int m,int s) //定义成员函数
{
hour=h;
minute=m;
second=s;
}
int main()
{
Clock cc;
cc.setTime(8,10,20);
cc.showTime();
return 0;
}
本片完!