c/c++学习----运算符重载
今天开了重新开始用eclipse,是想写c++程序。主要是以前用惯了eclipse,大学里弄java弄了好久,发现java需要学的东西太多了,框架多,搞j2ee太烦了,所以,现在趁着还有时间,我要转到c/c++上。
以后就把所有的学习心得都发上来。
今天为了练习运算符重载,我写了一个分数的运算。
总结了一点知识:
1、熟悉了eclipse的快捷方式
自动引入包:Ctrl+Shift+O
Control-Alt-down arrow: 复制高亮显示的一行或多行。
多行选中 Shift + down Alt-down arrow: 将一行或多行向下移动。
Alt-up arrow会向上移动。
其他的热键在菜单里有。你可以通过按下Control-Shift-L看到所有快捷键的列表。
按下Control-Shift-L两次,会显示热键对话框,你可以在这里自己设置热键。
2、itoa函数
#include<cstdlib> #include<cstdio> int main(){ int num = 10; char str[100]; itoa(num, str, 2); printf("%s\n", str); return 0; }
itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是目标字符串,第三个参数是转移数字时所用 的基数。
在上例中,转换基数为10。10:十进制;2:二进制
于是想到了一个十进制转二进制的方法:
#include<cstdlib> #include<cstdio> int main(){ int num = 10; char str[100]; int n = atoi(itoa(num, str, 2)); printf("%d\n",n); return 0; }
先把num转换为二进制的字符串,再把该字符串转换为整数
3、因为程序中要重载<<和>>所以用到了友元函数,然后我就重温了下,下边的定义是网上搜的
友元函数 :
友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend,其格式如下:
friend 类型 函数名(形式参数);
友元函数的声明可以放在类的私有部分,也可以放在公有部分,它们是没有区别的,都说明是该类的一个友元函数。
一个函数可以是多个类的友元函数,只需要在各个类中分别声明。
友元函数的调用与一般函数的调用方式和原理一致。
友元类 :
友元类的所有成员函数都是另一个类的友元函数,都可以访问另一个类中的隐藏信息(包括私有成员和保护成员)。
当希望一个类可以存取另一个类的私有成员时,可以将该类声明为另一类的友元类。定义友元类的语句格式如下:
friend class 类名;
其中:friend和class是关键字,类名必须是程序中的一个已定义过的类。