类和对象(扩展)

    xiaoxiao2023-10-06  152

    const成员

    修饰类的成员变量

    与C语言中const修饰变量含义相同

    修饰类的成员函数

    实际修饰该成员函数隐藏的this指针,表示该成员函数不能对类的任何成员进行修改(返回值类型 函数名()const{})经过编译器处理后为(返回值类型 函数名(cosnt 类名* this){})cosnt对象不能调用非const成员函数,只能调用const成员函数非const对象可以调用任何成员函数,优先调用非const函数const成员函数不能调用非const成员函数,只能调用const成员函数非const成员函数可以调用任何成员函数

    static成员

    声明为static的类成员称为类的静态成员,static修饰成员变量称为静态成员变量,static修饰成员函数称为静态成员函数

    特性

    静态成员为所有类共享,不属于某个具体的实例静态成员变量必须在类外定义,定义时不添加static关键字类静态成员可用类名::静态成员或对象.静态成员来访问静态成员没有隐藏的this指针,不能访问任何非静态成员非静态成员可以访问静态成员静态成员和普通的成员一样,也有访问限定符,可以有返回值、const修饰符等参数

    友元

    友元提供了一种突破封装的方式,所以友元增加了耦合度,破坏了封装,所以友元不宜多用

    友元函数

    用friend修饰的函数为友元函数友元函数可以访问类的私有成员,但不是类的成员函数友元函数不能用cosnt修饰友元函数可以在类的任何地方声明,不受访问限定符限制一个函数可以使多个类的友元函数友元函数调用与普通函数的调用原理相同

    友元类

    友元关系是单向的,不具有交换性友元关系不能传递

    内部类

    如果一个类在另一个类的内部,这个类称为内部类

    特性

    内部类可定义在外部类的public或private或protected中内部类是独立的,不属于外部类,不能通过外部类的对象调用内部类内部类可直接访问外部类的static成员、枚举成员,不需要外部类的类名或对象,外部类对内部类无访问权限内部类是外部类的友元,内部类可通过外部类的对象参数访问外部类中的所有成员,但外部类不是内部类的友元外部类的大小与内部类无任何关系

    C++11支持非静态成员变量在声明时直接初始化

    最新回复(0)