172210704111-陈国佳总结《2017年12月2日》【连续53天】
标题:成员对象和封闭类,常量对象,常量成员函数;
内容:A.
写了两道PAT(乙)题,虽然题目简单,但还是费了一番折腾;
B.1)成员对象和封闭类:
有成员对象的类叫 封闭类:
任何生成封闭类对象的语句,都要明确对象中的成员对象的初始化;
做法:通过封闭类的构造函数的初始化列表;
class A{private B s;C t;
public: A(int a,int b,int c)
};
A::A(int a,int b,int c):s(a),t(b,c){};
初始化列表的参数可以是:任意复杂的表达式,包括函数,变量(有定义即可);
封闭类:
a)对象生成时,先执行所有对象成员的构造函数,然后才执行封闭类的构造函数;
b)对象成员的构造函数调用次序与类中对象成员的说明一致,与初始化列表中出现的次序无关;
c)封闭类对象消亡时,先调用封闭类的析构函数,调用的次序与构造函数的调用次序相反;
复制构造函数:
封闭类的对象,如果是用默认复制构造函数初始化的,那么它里面包含的成员对象,也会用复制构造函数初始化;
2)常量成员函数:
当在某个对象前加const关键字时,这个对象只能使用构造,析构,常量成员函数;
在类的成员函数说明后面加const关键字,就是常量成员函数;
常量成员函数内部不能改变属性的值,也不能调用非常量成员函数(非常量成员函数可能改变值);
重载:当两个函数名字和参数都一样时,但一个加了const,可认为是重载,而非重定义;
mutable成员变量:可在const成员函数中修改;
常引用:在函数中引用对象,可以避免复制构造函数的执行,而为了避免对象被改变,可以对对象进行常引用
const & 。
明日计划:友元;