类的声明与基本概念

类的定义

类一般定义在主函数外,包含privatepublic两个分区,每个分区内都可以有成员变量和成员函数;

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

猜你喜欢

转载自blog.csdn.net/pyx2466079565/article/details/106173613