• 第三章 类与对象进阶


    this指针

    1. 定义: 非静态成员函数指向调用该函数的对象的指针
    2. 非静态成员函数隐含this指针参数
    3. 静态成员函数不针对某个对象,所以不包含this指针

    静态成员变量&函数

    1. 静态成员变量&静态成员函数本质上是全局变量,与该类有关,但不与调用它的对象直接相关

    2. 即使没有创建对象,静态成员也存在,被所有对象共享

    3. 调用方法

      • 类名::静态成员名
      • 对象.静态成员
      • 对象指针->静态成员
      • 对象引用.静态成员
    4. 静态变量必须声明或初始化,否则链接时会报错

    5. 静态成员函数内不可使用非静态成员变量及非静态成员函数

      #include <iostream>
      using namespace std;
      class Rectangle{
      	private:
      		int w,h;
      		static int TotalArea,TotalNum;
      	public:
      		Rectangle(int w_,int h_):w(w_),h(h_){
      			TotalNum++;
      			TotalArea+=w*h;
      		}
      		Rectangle(Rectangle &r){
      			w=r.w;
      			h=r.h;
      			TotalNum++;
      			TotalArea+=w*h;
      		}
      		~Rectangle(){
      			TotalNum--;
      			TotalArea-=w*h;
      		}
      		static void PrintTotal(){
      			cout<<TotalNum<<", "<<TotalArea<<endl;
      		}
      };
      int Rectangle::TotalNum;  //必须对类的静态变量进行声明或初始化,
      int Rectangle::TotalArea; //否则链接不通过 
      int main(){
      	Rectangle a(2,2),b(4,5);
      	Rectangle::PrintTotal();
      	a.PrintTotal(); //结果与对象a无关 
      	return 0;
      }
      

    成员对象与封闭类

    1. 封闭类:包含成员对象(类)的类
    2. 初始化顺序:成员对象先构造,然后才是封闭类[1];成员对象构造顺序依照封闭类中成员对象声明顺序
    3. 析构顺序:封闭类先析构,然后是成员对象[2]

    常量成员对象&常量成员函数

    1. 常量成员对象:成员对象前面加const关键字,初始化后便不能改变值

    2. 常量对象只能调用常量成员函数

    3. 常量成员函数:成员函数后面加上const关键字,保证调用对象值在函数中不会被改变

    4. 常量成员函数内不能改变成员变量值(静态成员对象除外),不能调用同类非常量成员函数[3] (静态成员函数除外)

    5. 常引用:保证引用参数在函数运行中值不被改变

      void func(const Stu &a)const{}
      

    友元

    1. 分类: 友元函数、友元类
    2. 友元不属于对象成员,但能够访问对象的私有private成员&保护protected成员
    3. 友元关系不能传递,不能继承[4]

    1. 因为封闭类构造时可能用到成员对象 ↩︎

    2. 先构造的后析构 ↩︎

    3. 因为非常量成员函数可能改变成员变量值 ↩︎

    4. 不能传递指:如果A是B的友元,B是C的友元,不能推导出A是C的友元 ↩︎

  • 相关阅读:
    Oracle Relink RAC Binary Options 说明
    Oracle 10g 对象 默认 ITL 数量 测试
    Oracle 相关的专业术语 说明
    Oracle 11g 新特性 自适应游标共享(Adaptive Cursor Sharing: ACS) 说明
    symbian 学习笔记(1) 基础
    symbian 学习笔记(3) 手机独有
    计算机体系结构几个常用的知识点记录
    数据结构和算法笔记(3)
    windows mobile 通用曾抽象
    一些简单常用算法整理学习
  • 原文地址:https://www.cnblogs.com/DreamEagle/p/12632003.html
Copyright © 2020-2023  润新知