类和对象提高

来源:互联网 发布:哪种顶级域名好排名 编辑:程序博客网 时间:2024/06/17 03:16

程序设计与算法(三)C++面向对象程序设计-郭炜 第三周

  • C++程序翻译成C程序后再编译
    • 类中的成员函数转换为了全局函数,此函数多一个参数A* this(A为一个类名)
    • this 指针:指向该函数作用的对象
  • 静态成员static
    • 静态成员变量
      • 被所有对象共享
      • 必须在定义类的文件中对静态成员变量进行声明,最好要初始化
      • 既然是全局的,就可以用来统计对象的数目,在构造函数中增加某些量,析构函数中减少
    • 静态成员函数
      • 不作用于具体的对象
      • 其中不能访问非静态成员变量和调用非静态成员函数
    • 在类外时,公有的静态成员不需要对象就可以访问,如以类名::成员名的方式
    • 本质上是全局变量/函数,不依赖于对象而存在
  • 封闭类
    • 有成员对象的类
    • 之中的对象须按其构造函数的方式初始化
    • 按说明次序调用成员对象的构造函数,再调用封闭类的构造函数
    • 消亡时,先执行封闭类的析构函数,再执行成员对象的析构函数
    • 封闭类中用复制构造函数初始化
  • 关于常量const
    • 常量对象
      • 在前面加关键字
      • 其值不能被改变
      • 不能调用非常量成员函数
    • 常量成员函数
      • 之中不能修改成员变量的值
      • 不能调用同类的非常量成员函数(静态成员函数除外)
      • 在成员函数说明后加const关键字
      • 两个成员函数的名字和参数都一样,一个是const,一个不是,算作重载
  • 对象的常引用
    • const A & sample
  • 友元函数
    • 一个类的友元函数可以访问该类的私有成员
    • 声明函数时在其前加friend关键字
    • 可以把一个类的成员函数说明为另一个类的友元
  • 友元类
    • 若A是B的友元类,则A的成员函数可以访问B的私有成员
    • 两个类关系密切时,声明为友元比较方便,就像C的struct,不分辨私有公有了
    • 友元类之间不能传递和继承
原创粉丝点击