1.对象的类型称为类,类代表一批对象的共性和特征。先声明类类型,再用它去定义若干个同类型的对象。类是对象的模板。
类是抽象的,不占用内存。对象是具体的,占用内存。
2.声明类类型的方法跟声明结构体类型相似。格式如下:
class 类型名 //类头
{private: //类体,内容是类的成员表,包括数据和函数
私有的数据和成员函数;
public:
公用的数据和成员函数;
}; //分号结束
注意:
1)一般是把数据隐蔽起来,而把成员函数作为对外界的接口;
2)被声明为私有的成员,只能被本类中的成员函数引用,类外不能调用(友元类除外);公用的成员,外界可以调用
3)除了private和public外,还有一种成员访问限定符,protected,称为受保护的成员,它不能被类外访问,和私有成员类似,但可以被派生类的成员函数访问。
4)不指定为private或public系统默认为private
5)通常先写public部分,再写private部分
6)为了用户方便,c++编译系统往往向用户提供类库,内装常用的基本类,也可以把自己常用的类放在一个专门的类库中,需要时直接调用。
3.定义对象的方法:
1)先声明类类型,再定义对象 格式:类名 对象名
2)声明类的同时定义对象
3)不出现类名,直接定义对象(不提倡)
class{
private:
public:
}stud1,stud2;
4.类中不包含成员函数,相当于结构体
5.一般的做法是把需要被外界调用的函数指定为public,指定为private的函数称为工具函数,它是被本类的成员函数调用的,支持其他函数的操作
6.在类外定义成员函数
可以在类体内进行函数声明,把定义放在类体外。(函数较长时推荐使用)
注意:成员函数在类外定义的格式为 类名::函数名()
“::”是作用域限定符
函数名前面啥都没有的,是全局函数。
7.内置inline成员函数
当成员函数在类体中定义且不包含循环等复杂结构时,系统自动将其作为内置函数处理(效率高)inline 可省略
否则不能省略
8.成员函数的存储方式:
1)同一类的不同对象的数据成员的值一般不同,但函数代码是相同的,调用不同对象的函数,调用的代码相同,但执行的结果一般不同,因为不同对象的函数调用的是本对象中的成员
2)一个对象所占空间的大小只取决于数据成员,与成员函数无关
3)this指针:当调用对象stud1的成员函数时,this指针就指向stud1,成员函数访问的就是stud1的成员
9.对象成员的引用有三种方法
1)对象名和成员运算符 stud1.num;
2)指向对象的指针
3)对象的引用
注意:
1)在一个类中至少要有一个公用的成员函数,否则就无法对对象进行任何操作;
2)类外只能引用对象的公用数据成员,调用公用函数
3)指针代码示例:
Time t,*p; //定义对象和指针
p=&t; //p指向对象t
cout<<p->hour; //输出t的成员hour,等价于(*p).hour和t.hour
4)引用代码示例:
Time t1;
Time &t2=t1; //定义Time类引用,使之初始化为t1;
cout<<t2.hour;