自考 C++ 杂记 —— 静态成员、const对象、指向类成员函数的指针

一、对象成员的初始化与静态成员

1.对象成员的初始化

对象成员构造函数的调用顺序:取决于在类中的说明顺序

析构函数的调用顺序与构造函数相反

2.静态成员

1)简单成员:声明中不含const、volatile、static的关键字函数

2)静态成员函数的特点:

七点和例子,见教材P108

3)成员名限定(动作):类 :: 数据成员/成员函数

4)类成员限定符(状态):“ :: ”

5)在类体外定义例子:

int Test: :x=30;

二、 Const对象

1. 常对象是指对象常量,格式为:const 类名 对象名;

2.在定义时必须进行初始化,而且在程序中不能再对其进行更新

只能调用类中的常成员函数,而不能调用类中的其他成员函数,即一个const对象只能访问const成员函数

3.常对象成员分为常成员函数和常数据成员

格式为:类型 函数名(形参表) const;

4.常成员函数为类的只读函数,可以读取数据成员的值,但不可以更新数据成员的值,它也不能调用该类中没有const修饰的其他成员函数。常成员函数定义中的const关键字是函数类型的一部分,因此在其实现部分中也要带上const关键字。

5.类名::类名(形参表):常数据成员名1(值1),常数据成员名2(值2),……

6.声明常对象时:const 类名 对象名;与 类名 const  对象名;是等效的

7.另外const数据成员的初始化只能在构造函数的初始化列表中进行。

三、指向类成员函数的指针

1.指向类A中参数类型列表为list,返回类型为type的成员函数的指针声明形式如下:

type (A :: * pointer)(list) 

2.声明及调用

#include <iostream>
using namespace std;
class A
{
    private:
        int val;
    public: 
        A(int i){val = i;}
        int value(int a){return val + a;}
};
void main()
{
    int (A::*pointer)(int); //声明指向类A的成员函数的指针
    pointer = A::value; //指向具体成员函数value,部分编译器要加&,即&A::value;
    A obj(10); //创建对象obj
    cout<<(obj.*pointer)(15)<<endl; //对象 使用类的函数指针,输出25,(obj.*pointer)必须有括号
    A *pc = &obj; //创建对象指针pc
    cout<<(obj->*pointer)(15)<<endl; //对象指针 使用类的函数指针,输出25,(obj->*pointer)必须有括号
}

对象使用类的函数指针时,语法:对象.*类的函数指针

对象指针使用类的函数指针时,语法:对象->*类的函数指针

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值