C++类简单学习(二)
来源:互联网 发布:网络布线按点收费吗 编辑:程序博客网 时间:2024/06/14 06:38
1.使用引用的一个注意事项:如果在一个函数内部定义一个局部变量,想要返回这个变量,那么返回值类型不能定义为引用,因为该局部变量在函数结束时将被删除,不能引用一个不存在的对象。
2.运算符重载的注意事项:
1)重载后的运算符必须至少有一个操作数是用户定义的类型,这将防止用户为标准类型重载运算符。
2)左侧的操作数为调用对象。
3)大多数运算符都可以通过成员或者非成员函数进行重载。而非成员函数怎么获取访问私有成员的资格,通过友元函数来实现。
A=B*2.75;(成员函数)
A=2.75*B;(非成员函数,带两个以及两个以上的参数)。
3.友元
1)友元函数:
创建友元函数的第一步是将原型放入类声明中,并在原型声明前加上关键词 friend:
friend Time operator*(double m, const Time & t);
虽然它在类声明中声明,但不属于成员函数,不能用成员运算符进行调用。但是访问权限同成员函数。
定义时,不用使用限定符,也不用在前面加上friend,类似于普通函数定义。
总之,类的友元函数是非成员函数,访问权限与成员函数相同。
运用友元函数的一个小技巧,如果为类重载运算符,并将非类的项作为其第一个操作数,则可以用友元函数来反转操作数的顺序。
Time operator*(double m, const Time & t)
{
return t * m;
}
再比如重载<<运算符
void operator<<(ostream & os, const Time & t)
{
os << t.hour << ” hours, ” << t.minutes << ” minutes”;
}
最终版本:
ostream & operator<<(ostream & os, const Time & t)
{
os << t.hour << ” hours, ” << t.minutes << ” minutes”;
return os;
}
2)友元类:
3)友元成员函数:
4.转换函数
1)转换函数必须是类方法。
2)转换函数不能指定返回类型。
3)转换函数不能有参数。
例如:
operator double();typeName(这里为double)指出了要转换成的类型,因此不需要指定返回类型。转换函数是类方法意味着:它需要通过类对象来调用,从而告知函数要转换的值,因此不需要参数。
注意:建议用显示调用防止出错。
5.四舍五入:int(A+0.5);
- C++类简单学习(二)
- Object-C学习(二):关键字self、super、static的简单理解
- C语言学习笔记(二)--从最简单的数据类型开始
- IOS学习笔记之二:Object C的简单应用(对比Java)
- C++test 学习(二)
- object-c 学习(二)
- C基础学习(二)
- c#winform学习(二)
- C语言学习(二)
- c学习笔记(二)
- 【C++】学习笔记二——简单数据类型
- 简单地C#word导出(二)
- C语言的简单应用(二)
- android uiautomator学习(二)主要类的简单介绍
- android uiautomator学习(二)主要类的简单介绍
- android uiautomator学习(二)主要类的简单介绍 .
- jsp学习的简单代码(二)
- jsp学习的简单代码(二)
- Mysql存储过程和函数
- 最完整Android Studio插件整理
- Android横竖屏切换的相关知识
- Baseball Game问题及解法
- Linux防火墙:iptables禁IP与解封IP常用命令
- C++类简单学习(二)
- 【web布局】点击按钮返回页面顶部的功能实现
- ng2-admin项目技术整理
- jquery与其它插件冲突时
- JMS(四):TemporaryQueue和TemporaryTopic,MDB
- 人工智能帮助千万用户完成「隐形征信」计算
- PC与开发板之间最简单快速的文件传输方式
- MapReducu操作HBase
- javaweb,数据库链接问题Communications link failure