赋值运算符重载
-
重载是对类型的变量进行运算操作
-
int main()
{
person p1;
person p2;
person p3=p1+p2;
} -
c++至少自动给一个类添加4哥函数
-
默认构造函(无参,函数体为空)
-
默认构造析构函数(无参,函数体为空)
-
默认拷贝构造函数,对属性进行拷贝
-
赋值与算法operator=,对属性进行值拷贝
-
赋值运算符也对属性进行拷贝操作。涉及深拷贝问题
-
-
等号运算符
-
operator==(Person &p)
仿函数运算符重载
-
- operator()(string name)
- {
cout<<m_name<<endl;
}
void test()
{
Person p;
p("小明 ");//在main函数中调用test()直接输出m_name。相当于调用了方法故称作仿函数
cout<<Person()(100,100)<<endl;//匿名的对象,相当于不用创建变量p.匿名对象用完系统自动释放。
}继承
-
class person1
//语法:class 子类:继承方式
class person2:public person1; -
父类中的所有非静态成员属性都会被子类继承下去
-
父类中的私有成员属性是被编译器给隐藏了,因此访问不到但是确实可以被继承下去
-
public可以类外访问也可以类内访问
-
protected可以类内访问不可以类外访问
-
private都不可以访问
-
父类私有,继承都不能访问
子类继承父类的public访问方式不变。可以类外访问父类public类
子类继承父类的protected访问方式public变protected。可以类外访问public和protected类
子类继承父类的private访问方式protected变private。子类都不可以访问,因为子类访问类型都变成了private。
该总结如上图所示
继承的构造函数和析构函数
-
当父类和子类中实现构造函数和析构函数,
调用顺序:父类的构造
子类的构造
子类的析构
父类的析构
-
-
静态变量
-
-
子类出现和父类同名静态成员函数,也会隐藏父类中所有同名成员函数。
-
多继承方式
class son:public father1,publli father2
-
当出现二一性或菱形继承的问题,
方法一是加入作用域来进行区别
方法二是加入虚基类(虚指针)
-
-
- class son:virtual public animal
- {}
-
//利用virtual来解决子类继承两个父类的相同属性时,无法继承该属性的问题也就是二一性
-
-