C++基础笔记10
结构体区别
struct
和class
仅仅只有默认的访问控制不同
struct
默认是public,class
默认是private
如果数据只是简单的聚合就用struct
,如果用于表示行为和状态的复杂对象,不能随意让外部访问,则用class
(这种访问控制的能力就是封装性,类的重要特性)
通过类定义的变量称之为对象
类的操作
访问控制:private, protected, public, friend
用于初始化的函数称为构造函数
析构函数用于对象销毁时做清理,调用时机是对象被销毁时,不管是栈中的对象被自动销毁,还是new
出来的对象被手动delete
,都会自动调用析构函数
成员函数 在对象内写的函数(只有public才能被外部调用,如果是private只能在成员函数内被调用)
成员函数的this
指针指向对象自身,默认会传递
运算符重载(操作符重载)可以让内置的运算符进行重解释,可以将函数名改成对应的操作符,需要加上operator
关键字
1 | class BigInt { |
一般运算符都是由左右两部分组成的 lhs operator rhs
重载运算符的操作就是右边的操作数auto operator-(const Type &rhs){}
explicit
关键字代表必须显式转化,类型转化运算符使用,避免因为二义性带来问题
friend
友元,在类中声明并加上友元声明,就可以在其他位置进行访问该类的私有成员,也可以单独对类的某个成员函数声明为友元friend double BigFloat::pow(BigInt&);
成员函数的其他命名方法:BigInt BigInt::add(BigInt &X) {}
继承与多态
继承:继承另一个类的成员变量和函数
1 | class Obj { |
子类可以访问public和protected成员,不能访问private成员
关键字 ==final== 如果一个类被final修饰,则这个类不能被继承
构造函数和析构函数无法被继承
虚函数 —> 动态多态
1 | class Zombie { |