C++primer学习笔记3(第10章、第11章前)

本文深入探讨C++中类的概念,包括数组初始化、枚举类型、静态成员变量及运算符重载等高级特性。解析了const在函数中的作用、非成员函数与友元的使用,以及如何重载输出运算符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天学习类,关于类的定义,公有私有保护构造析构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;
}

重载的输出运算符不止可用于显示,还可用于文件流。

今天就到这里,明天继续学习重载运算符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值