今天学习类,关于类的定义,公有私有保护构造析构this我基本都了解,没有怎么看。
而关于类的数组初始化,之前不了解可以这么写:
Stock stock[3]={Stock("ahahaha",10,5),Stock(),Stock("oheiheihei",5,10)};//每一个元素单独初始化
如果想在类内定义常量,不能使用const并直接进行初始化,可以使用 enum{monday=1}; 的形式来定义数值常量。
使用static定义的静态成员变量则被所有对象共同使用。
枚举可以使用类来定义,例如 enum class Day{Sun,Mon,Tue,Wed,Thu,Fri,Sat}; 使用其中的枚举值时必须用 Day::Sun 的形式来界定范围,这样可以防止不同类的枚举出现重名问题。
关于ADT的栈实例,自己就已经实现过,不作记录。
编程练习也都是类似的题,如果是新学的熟悉一下不错,我已经很熟悉了那就不写了(懒)。
/***********************************************************************************************************************/
一个函数后部的const指的是调用该函数的对象为常量无法修改。
关于运算符重载,双元运算的左侧操作数是调用对象,当左侧操作数不是该类的对象时需要用非成员函数,这时就要用到友元。先对该函数使用友元friend标记,这样后续运算会方便很多。
关于友元已经清楚了不作记录。
使用非成员运算符重载函数时,第一个参数对应第一个操作数。
//普通成员函数
Time operator+(const Time &t)const{
Time sum;
...;
return sum;
}
//非成员函数,需申明为友元
Time operator*(double m,const Time &t){
Time result;
...;
return result;
}
//重载输出方法1,需申明为友元
void operator<<(ostream &os,const Time &t){
os<<...;
}
//方法2,该方法可用于连续输出(配合普通字符输出),需申明为友元
ostream& operator<<(ostream &os,const Time &t){
os<<...;
return os;
}
重载的输出运算符不止可用于显示,还可用于文件流。
今天就到这里,明天继续学习重载运算符。