【自考】C++程序设计(三)特殊函数和成员

【前言】

      本文是对C++中特殊函数和成员的介绍。
                 

【对象成员初始化 & 静态成员】

      对象成员的初始化中,对象成员构造函数的调用顺序就是对象成员在类中说明的顺序,与初始化列表的顺序无关。如果我们要建立A类对象,首先调用对象成员的构造函数,然后初始化对象成员,再执行A类的构造函数,初始化A类中的其它成员。当初始化 const成员和引用成员是,必须通过成员初始化列表。
==========================================================
      静态数据成员和静态成员函数统称为静态成员,static修饰。静态成员是类的成员不是对象的成员,类中的任何成员函数都可以访问静态成员,静态成员函数没有this指针,所以静态成员函数,不能直接访问非静态成员,只能通过对象名指向对象的指针,来访问对象的非静态成员。
      静态成员和静态对象是两个不同的概念,静态对象是static声明的类的对象。静态对象的构造函数在第一次遇到它的变量定义是被调用,直到程序结束前仅调用一次。静态对象的析构函数在整个程序退出之前被调用,也只调用一次。相较于普通对象,如果作为循环体内的局部对象,生命周期和本次循环共存,每次循环结束都要调用析构函数。

【友元函数 & const对象】

      友元函数可以存取私有成员、公有成员和保护成员,友元函数可以是一个类或函数,未定义的类也可以作为友元的引用。友元函数有三种形式,如下.
      一、类本身的友元函数。友元说明必须出现于类中,应将友元看做类接口的一部分。使用主要目的提高程序效率,但是也破坏了封装和数据隐藏。友元函数可以再类中声明时定义,如果在类外定义,不能再使用friend关键字。
      二、将一个类的成员函数通过friend说明,为另一个类的友元。比如将类One中的func函数,说明为类Two的友元,我们叫这个func函数,友元函数。
      要对func函数使用限定符来说明出处,所以 One::func(Two&),类One的对象就可以通过友元函数func(Two&)访问类Two的所有成员,因为要访问类Two,所以要使用类Two对象的引用作为传递参数。所以,我们需要明确,因为func函数的的确确是在类One中定义的,所以它可以不用对象名就自由存取类one的成员,友元函数func并不是类Two的成员函数,所以需要对象名才能存取Two类的成员。
      三、将一个类说明为另一个类的友元。这时,整个类的成员函数均具有友元函数的性能了,友元说明形式就简化为 friend class 类名。如声明类One为Two的友元,就意味着,类One的成员函数可以访问类Two的私有成员。
==========================================================
      类中使用const关键字定义数据成员和成员函数或对象,一个const对象只能访问const成员函数不能调用非const成员函数。
      使用常引用作为函数的参数,不允许函数改变引用值。
      常对象声明时必须初始化,并且不能被更新
      常成员函数必须将关键字const放在参数列表后,函数体之前。定义成员函数时,在函数体之前加上const可以防止覆盖函数改变数据成员的值。使用const声明static成员函数没有什么作用,C++中声明构造函数和析构函数时使用const关键字均是非法的。

【数组和类 & 指向类成员函数的指针】

       对于数组,会为数组每个元素调用一次构造函数,编译器调用适当的构造函数建立数组的每一个分量。数组名代表数组的首地址。
        指向类成员的指针,包括指向类数据成员的指针和指向类成员函数的指针。但指向类数据成员的指针用途不大。
      指向类成员函数的指针,如 void (A ::*panf)(void); pafn是一个指针,指向类A的成员函数,此成员函数没有参数也没返回值。使用指向类成员函数的指针,访问对象的某个成员函数时,必须指定一个对象。
      使用对象名或引用来调用,指针指向的函数时,使用 “.*”;使用指向对象的指针来调用,指针指向的函数时,使用“-> *”。

【小结】

      本文简介C++中对象成员初始化,静态成员,友元函数,const对象,数组和类以及指向类成员函数的指针。希望能给读者带来帮助~
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 57
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 57
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值