C++ primer plus 阅读记录-使用类
来源:互联网 发布:联影 算法怎么样 编辑:程序博客网 时间:2024/06/01 22:25
1 运算符重载
需使用被称为运算符函数的特殊函数形式:
operator op(argument-list)
重载后的运算符必须至少有一个操作数是用户定义的类型,这将防止用户为标准类型重载运算符。
不能创建新运算符。
只能通过成员函数进行重载的运算符:
= ( ) [ ] ->
2. 友元
通过让函数成为类的友元,可以赋予该函数与类的成员函数相同的访问权限。
创建友元函数的第一步是将其原型放在类声明中,并在原型声明前加上关键字friend;第二步是编写函数定义,不要使用类::限定符,不要在定义中使用关键字friend。
3.随机数
头文件cstdlib包含了srand()和rand()的原型,而ctime包含了time()的 原型。
使用举例:
srand(time(0));
int a = rand() % 360;
4.类的自动转换和强制类型转换
只接受一个参数的构造函数定义了从参数类型到类类型的转换。如果使用关键字explicit限定了这种构造函数,则它只能用于显示转换,否则也可以用于隐式转换。
Stonewt(double lbs);
Stonewt myCat;
myCat = 19.6; //隐式转换
上面介绍利用构造函数将数字转换为Stonewt对象,那么是否可以将Stonewt对象转换为double值呢?
答案是可以这样做,必须使用特殊的C++运算符函数–转换函数。
operator typeName();
1)转换函数必须是类方法;
2)转换函数不能指定返回类型;
3)转换函数不能有参数;
如: operator double( );
练习:
//complex0.h#ifndef COMPLEX0_H_#define COMPLEX0_H_class complex{private: double real; double imag;public: complex(); complex(double, double b=0.0); ~complex(); complex operator+(const complex& ) const; complex operator-(const complex& ) const; complex operator*(const complex& ) const; friend complex operator*(double, const complex&); friend std::ostream& operator<<(std::ostream&, const complex&); friend std::istream& operator>>(std::istream&, complex&);};#endif
发现一个有趣的现象:即输入cin会按Enter敲回车,导致显示输出换行。再cout就会在下一行输出。
查看相关问题,有人指出输入是带回显的!
- C++ primer plus 阅读记录-使用类
- C++ primer plus 阅读记录-类继承
- C++ primer plus 阅读记录-对象和类
- C++ primer plus 阅读记录-类和动态内存分配
- C++ primer plus 阅读记录-基础知识
- C++ primer plus 阅读记录-输入输出
- 《C Primer Plus》阅读笔记(4)
- 《C Primer Plus》阅读笔记(3)
- 《C Primer Plus》阅读笔记(2)
- 《C Primer Plus》开头阅读笔记
- C++primer plus阅读笔记第四章
- c primer plus 阅读共享 -1
- c primer plus 阅读共享 -2
- c++primer plus阅读笔记(一)
- c++primer plus阅读笔记(二)
- c++primer plus阅读笔记(四)
- c++primer plus阅读笔记(五)
- c++primer plus阅读笔记(六)
- Butterknife的使用
- 数值得整数次方--模拟pow函数的功能
- csapp 实验二 二进制炸弹
- 利用Android Studio的CMake来快速开发NDK
- multipart/form-data post 方法提交表单,后台获取不到数据
- C++ primer plus 阅读记录-使用类
- leetcode之单链表题目汇总
- bat脚本学习 --参数传递
- lua中table操作的相关函数
- html5的学习笔记
- 深度神经网络结构以及Pre-Training的理解
- Java8:函数式编程与Lambda表达式
- JS设置页面下拉刷新
- java web项目内存溢出