类的定义
类一般定义在主函数外,包含private
和public
两个分区,每个分区内都可以有成员变量和成员函数;
class Date{ //类名
private: //私有分区,只有类体内能访问
int y, m, d;
public: //公有分区,内外都能访问
void Print(){
cout<<y<<m<<d;
}
}; //记得加分号!!
- private分区内的东西出了类体就不能直接访问了,不可被继承
- public分区内的东西出了类体还可以用
.
或->
直接访问,可以被继承
因此在实际应用中,往往通过public分区内的成员函数,来访问private分区内的私有变量(如上面的Print函数)
Date d;
d.Print();//用Print访问y,m,d
ps.类还有protected分区
,表示“受保护成员”,除了可以被继承外,与private
相同
类声明中的“占位操作”
class A; //这儿直接写分号了
...
这样声明称为前向声明
,只是告诉系统,有一个新的类A,但具体是什么不知道,就像预告片一样。前向声明只能用作定义该类的指针/引用/以该类型为返回值的函数,而不能定义对象;只有当类体的定义完整后,才可以用于定义对象
class A; //前向声明
class B
{
public:
A &a;//对象的引用
}; //类体B的定义完整了
class A{
public:
B b;//对象
}; //类体A的定义完整了
如上,对类体A前向声明后,由于它不完整,在类体B内不能用它定义对象;而在具体描述类体A的过程中,类体B已经完整定义,故可以用B定义对象。
直接调用成员的方式
除指针外,其余全用.
(英文句号)表示调用;指针用->
表示调用
A t,&b=t,*p=&t;
//A是个类,t是普通对象,b是对象引用,p是对象指针
cout<<t.m<<b.m<<p->m;
本人是在读大学生,系列教程主要为了便于我的同学们参考,其中可能有很多不妥之处,望各位大佬雅正。
公众号:网织青春zcwlgc2019