C++第四周 2

C++第四周 2

C++面对对象程序设计第二节

静态成员和静态成员函数

  1. 定义与java相同,这里只讨论其独特性质

  2. 静态成员函数访问的四种方式

    • 类名+成员名

      1
      A :: Print();
    • 对象名.成员名

      1
      2
      A m;
      m.Print();
    • 指针->成员名

      1
      2
      A *p;
      p->Print();
    • 引用

      1
      2
      A &p;
      p.Print();
  3. 静态成员变量本质是全局变量

  4. 静态成员变量必须在定义的文件中对其进行初始化或赋值,否则编译通过,链接不通过。

    1
    2
    3
    4
    class A{
    static int m ;
    };
    int A :: m = 0 ; //赋值
  5. 静态成员函数内可以以访问非静态成员函数以及非静态变量

成员对象与友元类

  1. 成员对象:第一个类的成员变量是另一个类的对象

  2. 包含对象的类叫做封闭类

  3. 封闭类的构造函数形式
    类名+构造函数(参数表):成员变量(参数表),成员变量2(参数表)…

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     //成员对象与封闭类
    class examples
    {
    public:
    example a ;
    int b ;
    int c ;
    int e ;
    examples(int m ,int n) : a(m-n,m+n,m*n),e(m){};
    };
    //使用
    examples p (1,2);
  4. 对于封闭类构造与析构顺序
    成员对象:先构造后析构
    封闭对象:后构造先析构

友元类

  1. 友元函数

    • 友元函数可以访问类的私有成员
    • 将一个类的成员函数定义为另一个友元
  2. 友元类
    A是B的友元类,A的成员函数可以访问B的私有成员

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class B{
    private:
    int a ;
    friend class A ;
    };
    class A{
    B m ;
    void Print()
    {
    cout << m.a << endl ;
    }
    };
  3. 友元类不能传递,不能继承

this 指针

  1. 非静态成员函数中可以直接使用this指针,代表指针该函数体用的对象指针

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class A{
    int i ;
    public:
    void Hello {cout << "hello" << endl;}
    //等价于 void Hello (A*this) {cout << "hello" << endl;}
    };

    int main()
    {
    A* p = NULL;
    p->Hello(); //输出Hello
    }
  2. this函数不能作用静态变量以及全局变量。可以作用与const变量

常量成员函数

  1. 定义方法

    1
    2
    3
    4
    class A
    {
    void Print(const a) const { cout << endl ;}
    };
  2. 常量成员不能调用非常量成员函数

  3. 常量成员函数不能调用非常量成员变量

作者

瑾年

发布于

2021-07-17

更新于

2021-07-17

许可协议

CC BY-NC-SA 4.0

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×