2015级C++第7周项目 友元、共享数据保护、多文件结构

【项目1-成员函数、友元函数和一般函数有差别】參考解答

  (1)阅读以下的程序,体会凝视中的说明(要执行程序,请找到课程主页并复制代码)

//例:使用成员函数、友元函数和一般函数的差别
#include <iostream>
using namespace std;
class Time
{
public:
    Time(int h,int m,int s):hour(h),minute(m),sec(s) {}
    void display1();    //display1是成员函数
    friend void display2(Time &);  //display2是友元函数
    int getHour(){return hour;}
    int getMinute(){return minute;}
    int getSec(){return sec;}
private:
    int hour;
    int minute;
    int sec;
};
void Time::display1()  //成员函数display1的实现,dispaly1前加Time::
{
    //以hour形式直接訪问私有数据成员,实质是this->hour形式
    cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
void display2(Time &t)  //友元函数dispaly2的实现,不加Time::,友元并非类的成员
{
    //尽管不是类的成员函数。却能够用t.hour的形式直接訪问私有数据成员——这就是友元
    cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl;
}
void display3(Time &t)  //display3是一般函数,dispaly3前不加Time::
{
    //不能直接訪问。仅仅能用公共接口t.getHour()形式訪问私有数据成员
    cout<<t.getHour()<<":"<<t.getMinute()<<":"<<t.getSec()<<endl;
}
int main()
{
    Time t1(10,13,56);
    t1.display1();  //成员函数这样调用:对象名.函数名()
    display2(t1);   //友员函数的调用和一般函数无异(但实现中能够不同)
    display3(t1);   //一般函数的调用
    return 0;
}

  (2)模仿上面的演示样例,完毕求点类中距离的任务。你须要实现求距离函数的三种版本号:分别利用成员函数、友元函数和一般函数求两点间距离的函数,并设计main()函数完毕測试。

提示:此项目和样例的差别在于“距离是一个点和另外一个点的距离”,不同版本号在參数上有体现。三个版本号建议分开測试,也能够如演示样例,放在一个程序中完毕。

  以下是点类的部分代码。

class CPoint
{
private:
    double x;  // 横坐标
    double y;  // 纵坐标
 public:
    CPoint(double xx=0,double yy=0):x(xx),y(yy){}
    ……//请继续写须要的代码
};

【项目2-友元类】 參考解答

  定义以下两个类的成员函数(为体验友元类,实际上本例并不一定是一个好的设计。将两个类的合并为一个DateTime,日期、时间都处理更好)

class Date; //对Date类的提前引用声明
class Time
{
public:
    Time(int,int,int);
    void add_a_second(Date &);  //添加1秒,1秒后可能会到了下一天,乃到下一月、下一年
    void display(Date &);  //显示时间,格式:月/日/年 时:分:秒
private:
    int hour;
    int minute;
    int sec;
};

class Date
{
public:
    Date(int,int,int);
    friend class Time; //Time为Date的友元类
private:
    int month;
    int day;
    int year;
};

int main( )
{
    Time t1(23,59,32);
    Date d1(12,31,2013);   //測试时。再试试Date d1(2,28,2013)会怎样
    for(int i=0; i<=100; i++)
    {
        t1.add_a_second(d1);
        t1.display(d1);
    }
    return 0;
}
//以下定义两个类中的成员函数。要求不得再添加成员函数
//注意体会在Time的成员函数中能够调用Date类的私有数据成员   

【项目3-用多文件组织多个类的程序】 參考解答

  将上一周“项目2-带武器的游戏角色”用“一个项目多个文件”的方式实现,当中两个类的声明放在一个.h文件里,每一个类的成员函数分别放一个文件。main()函数用一个文件。体会这样安排的长处。

时间: 2024-11-03 21:56:12

2015级C++第7周项目 友元、共享数据保护、多文件结构的相关文章

2015级C++第4周项目 函数

[项目1-求最大公约数] 参考解答 (1)输入两个数,并求出其最大公约数 #include <iostream> using namespace std; //自定义函数的原型(即函数声明) int main() { int a,b,g; cin>>a>>b; g=gcd(a,b); cout<<"最大公约数是: "<<g; return 0; } int gcd(int x,int y) //定义用于求两数的最大公约数的函数

2015级C++第12周实践项目 运算符重载(一)

[项目1-实现复数类中的运算符重载] 参考解答 (1)请用类的成员函数,定义复数类重载运算符+.-.*./,使之能用于复数的加减乘除 class Complex { public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r; imag=i;} Complex operator+(const Complex &c2); Complex operator-(const Complex &c2); Complex op

2015级C++第2周实践项目

[项目1 - 宣告"主权"] 你已经是CSDN博客主了,用IT人特有的方式,编一段程序.在屏幕上输出你想说的话.按要求公布博文,作为我们的开山之作. [项目2 - 胖子不想说体重]參考解答 成年男性的标准体重公式为: 标准体重(kg)=身高(cm)?100 超标准体重20%为超重,比标准体重轻20%为超轻. 请编写C++程序,输入身高和体重,完毕以下的任务: (1)计算并输出标准体重. (2)计算出标准体重,当超重时.请给出提示. (3)计算出标准体重.当超重时给出提示.不超重时也给提

软件学院2015级软件工程专业培养方案

软件学院2015级软件工程专业培养方案   一.培养目标 本专业培养拥护党的基本路线,德.智.体.美等方面全面发展,适应新世纪计算机软件技术发展,培养适应管理.服务一线需要,具有良好的综合素质,掌握计算机软件开发和软件工程的基本理论.基本知识和基本技能,掌握软件开发模式.流行软件开发工具以及软件外包开发规范,在企事业或机关等单位从事计算机软件系统开发.运行维护.软件测试等工作的高素质应用型专门人才. 本专业主要分软件服务工程方向.金融服务工程方向.网络系统运维外包方向.软件服务工程方向是要为社会

第六周(友元函数)

/* *copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:第六周(友元函数) *作者:王忠 *完成日期:2015.4.14 *版本号:v1.0 * *问题描述:别利用成员函数.友元函数和一般函数求两点间距离的函数,并设计main()函数完成测试. *输入描述: *程序输出: #include <iostream> #include <cmath> using namespace std; class CPoint { p

2014秋C++ 第8周项目 分支程序设计

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703.课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看. 阅读并验证 阅读以下的两段程序,用"人脑"执行写出输出结果.再在计算机或手机上执行程序,对照自己写出的结果,进行反思.1.#include <iostream>using namespace std;int main(){    int a=1,b=2,c=3;

关于举办 2015年 Autodesk 助力云应用项目开发活动通知

各位尊敬的Autodesk 合作伙伴,大家好! 相信您在过去的一年里应该对Autodesk最新的云服务技术有所了解,您是不是曾经闪现过一些很好的想法,却由于不确定是否真实可行,或担心没有技术支持来帮助您实现,亦或可能没有空余的时间,而导致这些美好的想法一直束之高阁?现在Autodesk ADN 部门希望能帮助大家实现!为了促进 Autodesk 最新的云应用技术推广,让更多Autodesk合作伙伴能够借助Autodesk 最新的云技术在当前设计行业的云应用浪潮中抓住涌现出的新商机,我们Autod

第六周(友元类)

/* *copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:第六周(友元类) *作者:王忠 *完成日期:2015.4.14 *版本号:v1.0 * *问题描述:定义下面两个类的成员函数(为体验友元类,实际上本例并不一定是一个好的设计,将两个类的合并为一个DateTime,日期.时间都处理更好) *输入描述: *程序输出: #include <iostream> using namespace std; class Date; //对D

2015级计算机科学与技术软件工程(西北师范大学)助教总结

2015级计算机科学与技术软件工程(西北师范大学)助教总结 18年软件工程课程助教总结 非常有幸在上学期由代老师的推荐担任18年软件工程课程助教.在代老师.邹欣老师.周筠老师和郑蕊老师的监督和帮助下,我完成了助教工作.从开始的对助教工作的一知半解到最后的得心应手,都离不开老师和同学们的支持和配合. 虽然这是我第二次担任本科生助教,但是这次的助教工作才正式登堂入室.通过本次工作,我基本上搭建起来软件工程助教相关工作的框架,使我对助教工作有了深刻的理解,这对于下学期指导和帮助师弟师妹助教工作有巨大益