【C++ Primer plus】【第十一章】使用类
来源:互联网 发布:python yield什么意思 编辑:程序博客网 时间:2024/05/05 17:59
【简述】
本章主要包括以下几方面,运算符重载,友元函数,<<重载,类的自动转换和转换函数
【知识点】
1.运算符重载形式:operatorop(argumentlist) EG:operator+()
2.返回类的声明(不会改变数据的那种)
Time sum(const Time &t) const ——说明该函数不会修改数据成员
Time Time::sum(const Time &t) const —— 返回类型 域名::函数
3.返回值如果返回的局部变量或临时对象,不能返回引用,因为返回后放空。类似指正
4.重载函数
total = A.operator+(B);
相当于
total = A + B;
这也是为什么要重载运算符,这种重载方法,类名必须在左侧,如果基本类型则有问题,如果要基本类型在左,则需要用友元函数;
5.重载的运算符,其中一个操作数必须是自定义,否则和基本类型运算符冲突,(如不可重载 int-int)
6.非成员函数重载,如友元函数,但=,(),【】,-》必须用成员函数
7.友员函数的原型要声明在对应类中,并加friend;实现时,不用域,因为非成员函数,亦不需要friend关键字
8.<<重载时,返回引用,这样可以使用 COUT<<A<<B<<ENDL ,形式,如果直接返回对象就不能这么用
由于基类引用可以用于扩展类,所以ostream得引用,可以返回fotream的流,P394
9.COUT<<A; 实际上相当于operator<<(cout,a);
friend std::ostream & operator << (std::ostream & os, const Time &t)
10.非成员函数的形参数目和操作数相同,而成员函数少1,因为存在隐式调用。
11.类中直接定义的简短函数将被作为内联
12.枚举可以在类声明时定义,使用变量注意域,如友元函数不在命令空间,变量使用全名限定
13.如果函数返回或计算出一个新类,要考虑用构造函数,这样可以保证正确性。
14.一元的运算符重载
VECTOER OPERATOR-() CONST
VECTOER VECT::OPERATOR-() COSNT {}
【转换相关】
1.C++中,接受一个参数的构造函数为将类型与该参数相同的值得类提供转换,作为转换函数。(隐式转换)
my=1.1 则直接调用,生成临时对象,前提是有一个参数的构造函数。
2.explicit 关闭隐式转换
3.P413,eg:什么情况使用stonewt(double)
A.将stonewt对象初始化为double值, Stonewt Jumbo(1.1)
B.double值赋给对象,mycat = 1.1
C将double值穿个接受Stonewt的参数 func(1.1),FUNC接受类
D.返回时声明为Stonewt的函数, return 11.1
E.以上倾向,可以向上合理转换的的情况,如把1.1都换成1.
4.可以int = Stonwt么,可以,但不是用构造函数,用到转换函数。
double A = double (Stonewt),前提是定义了转换函数,那么怎么定义ne?
operator typename()
限制:必须是类成员方法,无入参,无返回类型
CLASS A
{
PUBLIC:
operator int() const;
}
A::operator int() const
{
return xx,
}
这样是cout<<可以直接指定类对象名称,如果只有一个转换函数,没有二义性,则自动转换为double
5.最后,多用显示,少用隐式
- 【C++ Primer plus】【第十一章】使用类
- c primer plus第十一章课后习题
- C primer plus 第十一章 练习1:
- C primer plus 第十一章 练习2:
- C primer plus 第十一章 练习3:
- c++primer plus第十一章答案
- c primer plus 第十一章学习小结
- C++ Primer Plus学习:第十一章 使用类(1)
- C++ Primer Plus学习:第十一章 使用类(2)
- C++ Primer Plus学习:第十一章 使用类(3)
- C++ Primer Plus 第十一章
- 《c primer plus》编程练习回顾-第十一章(上)
- C Primer Plus 第十一章学习总结^2015.5.2
- C primer plus(第五版)编程练习第十一章
- C Primer Plus 第十一章 编程练习 1-15题
- C++Primer Plus(第六版) 第十一章 第七题
- C ++ Primer Plus 第六版 第十一章编程练习答案
- 《C Primer Plus》第六版 第十一章编程练习
- 数据结构——堆栈和队列
- AWT基本组件(1)
- 房价之殇
- 关闭ECLIPSE的各种提示错误
- Lambda快速入门
- 【C++ Primer plus】【第十一章】使用类
- <css 七>out-line
- java基础知识点总结(四)
- jre/bin目录下面工具说明 ——转载于作者eclipse_yin
- info.plist文件的解读
- Android 登录界面设计
- 该篇博客是在《iOS高级开发——CollectionView的动态增删cell及模型重构》的基础上继续进行开发的。在之前那篇博客中,我们实现了动态的增删cell,并且使用了模型Model进行重构
- 使用RxAndroid配合MVP模式实现异步网络请求,更新ui
- Mycat的简单性能测试