c++基础概念,类

类的三种成员:

                  private数据只能在类内访问;

                  protected可在类内以及子类/派生类中访问,类外不可访问;

                  public:可在类外访问;

类的特性:

                  定义类时,系统不为其分配内存空间;

                  必须定义一个对象或者new一个对象;

                  才为其分配空间;

​​​​​​

当一个类定义一个对象时,每个对象内部都存储各自的成员变量,但是对象内部不存储成员函数,

成员函数存储在代码区,由各对象共享成员函数。

this指针:

                  当对象调用成员函数时,函数可能会处理类的成员数据,此时,函数通过调用对象

          内部的 this 指针来调用成员数据。

                  this指针是一个指向每个对象自身数据成员的指针,只有这样,调用函数时,才可以调            用各个对象内部的成员数据。

构造和析构:

                虚析构:当存在多态时(虚继承),多态为父类指针指向子类对象,

                              虚析构可以保证调用派生类(子类)的析构函数,防止内存泄露;

                析构函数分为:默认构造函数,有参构造函数,拷贝构造函数。

                                         有参构造函数可以重载,

拷贝构造函数:

                  拷贝构造函数调用时机:旧对象初始化新对象;

                                                         如果用户不提供拷贝构造,会自动提供默认拷贝构造。

                  拷贝构造函数的几种形式:

                         浅拷贝:

                                      Data(const  Data &ob)

                                       {

                                                //ob为旧对象的引用

                                                this->mA = ob.mA;

                                       }

                         深拷贝:

                                       Data(const  Data &ob)

                                       {

                                                //ob为旧对象的引用

                                                this->name  =  new  char[strlen(ob.name)+1];

                                                strcpy(name,ob.name);

                                       }

构造函数的调用顺序:

                             先调用基类构造函数,后调用派生类(子类)构造函数;

                             先调用成员对象类构造函数,后调用基类构造函数;

                             派生类(子类)构造函数最后被调用;

        总体顺序:成员对象类构造函数,基类构造函数,子类/派生类构造函数;

析构函数调用顺序:

                             先调用派生类/子类的析构函数,后调用基类的析构函数;

                             先调用基类的析构函数,后调用成员对象类析构函数

                             成员对象类析构函数最后被调用;

        总体顺序:子类/派生类析构函数,基类析构函数,成员对象类析构函数;

静态成员:

                  概念:类的静态数据成员是为类的所有对象共享的数据成员,

                             静态数据成员可以实现多个对象之间的数据共享;

                   特点:1,类的静态数据成员在类内定义,在类外初始化。

                              2,无论是否定义对象,类的静态数据都会在程序加载时生成,不必定义对象;

                              3,类的静态数据成员可以被普通函数调用,静态函数只能调用静态成员;

                class   Data

                 {

                  public:

                           int  a;

                          static  int  b;  //类中定义

                 }

                 int  Data::b = 100;  //类中定义,类外初始化;

               静态成员数据可通过类名直接访问:

                    cout<<Data::b<<endl;

               静态成员数据也可通过对象直接访问        

                    Data  ob1;

                   cout<<ob1.b<<endl;

    静态成员函数的特点:

                     1,静态成员函数无法访问类的非静态成员数据

                     2,静态成员函数无this指针

                     3,静态成员函数可在无对象定义时被调用;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值