• 2013级C++第13周(春)项目——继承的进一步话题与GUI应用开发


    课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接


    第一部分 程序阅读:阅读以下类的定义,请说出在測试函数中不同情况的调用产生的结果

    #include <iostream>
    using namespace std;
    class A
    {
    protected:
        int a,b;
    public:
        A(int aa, int bb):a(aa), b(bb) {}
        void printA()
        {
            cout<<"a: "<<a<<"	b: "<<b<<endl;
        }
    };
    class B: public A
    {
        int c;
    public:
        B(int aa, int bb, int cc):A(aa,bb),c(cc) {}
        void printB()
        {
            cout<<"a: "<<a<<"	b: "<<b<<"	c: "<<c<<endl;
        }
    };
    int main()
    {
        A a(1,1);
        B b(2,3,4);
        //此处添加以下各小题中的代码
        return 0;
    }

    (1)
        a=b;
        a.printA();
        b.printA();
        b.printB();
    
    你觉得输出结果是:______________________
    执行程序的结果是:______________________


    (2)

        b=a;
        a.printA();
        b.printA();
        b.printB();
    程序会发生编译错误,原因是:__________
    记录下IDE中提示的错误并理解:_________


    (3)

        A &r1=a;
        A &r2=b;
        r1.printA();
        r2.printA();
        r2.printB();
    将会错误发生的一行删除;
    对余下的程序,你觉得输出是:__________
    实际执行的输出是:____________________
    那一行的错误原因是:__________________


    (4)

        A *p=&a;
        p->printA();
        p=&b;
        p->printA();
        p->printB();
    将会错误发生的一行删除;
    对余下的程序,你觉得输出是:__________
    实际执行的输出是:____________________
    那一行的错误原因是:__________________


    (5)
    在class A中添加成员函数: int getA(){return a;}
    在main函数前添加一般函数:

    void f(A x)
    {
        cout<<"aaaaah, my a: "<<x.getA()<<endl;
    }
    main函数中指定部分为:
        f(a);
        f(b);
    你觉得输出结果是:______________________
    执行程序的结果是:______________________


    第2部分 实践项目
    【项目1 - 点、圆的关系】
    (1)先建立一个Point(点)类,包括数据成员x,y(坐标点);
    (2)以Point为基类,派生出一个Circle(圆)类,添加数据成员(半径),基类的成员表示圆心;
    (3)编写上述两类中的构造、析构函数及必要运算符重载函数(本项目主要是输入输出);
    (4)定义友元函数int locate,推断点p与圆的位置关系(返回值<0圆内,==0圆上,>0 圆外);
    int main( )
    {
    	Circle c1(3,2,4),c2(4,5,5);      //c2应该大于c1
    	Point p1(1,1),p2(3,-2),p3(7,3);  //分别位于c1内、上、外
    
    
    	cout<<"圆c1: "<<c1;
     
    	cout<<"点p1: "<<p1;
    	cout<<"点p1在圆c1之"<<((locate(p1, c1)>0)?"外":((locate(p1, c1)<0)?"内":"上"))<<endl;
     
    	cout<<"点p2: "<<p2;
    	cout<<"点p2在圆c1之"<<((locate(p2, c1)>0)?"外":((locate(p2, c1)<0)?"内":"上"))<<endl;
     
    	cout<<"点p3: "<<p3;
    	cout<<"点p3在圆c1之"<<((locate(p3, c1)>0)?"外":((locate(p3, c1)<0)?"内":"上"))<<endl;
    	return 0;
    }

    【项目2 - 圆的比較】
       在项目1的基础上,在圆类上重载关系运算符(6种),使之可以按圆的面积比較两个圆的大小。自编main函数完毕測试。


    【项目3 - 与圆心相连的直线】
      在项目1中定义的Point(点)类和Circle(圆)类基础上,设计一种方案,输出给定一点p与圆心相连成的直线与圆的两个交点。
      提示:

      

    【项目4 - GUI应用程序开发实践】
      这实际上已经不是一个项目的问题,而是开启一个新的历程。当C++基础已经具备,全然可以通过更进一步的实践,在校园中開始开发经验的积累。我们用wxWidgets起步,按《wxWidgets刚開始学习的人导引》中的指导開始学习、实践。指导书PDF版及附件在http://download.csdn.net/detail/sxhelijian/7365537




    ================= 迂者 贺利坚 CSDN博客专栏=================
    |== IT学子成长指导专栏 专栏文章的分类文件夹(不定期更新) ==|
    |== C++ 课堂在线专栏  贺利坚课程教学链接(分课程年级) ==|
    |== 我写的书——《逆袭大学——传给IT学子的正能量》    ==|
    ===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =====


  • 相关阅读:
    Linux中创建Daemon进程的三种方法【转】
    Linux 内核定时器使用 二 高精度定时器 hrtimer 的用例【转】
    使用 Qemu 虚拟 ARM64 平台演示 kdump 崩溃转存【转】
    自旋锁 spin_lock、 spin_lock_irq 以及 spin_lock_irqsave 的区别【转】
    Linux中的spinlock机制[四]
    Linux中的虚拟内存机制和内存映射【转】
    那些情况该使用它们spin_lock到spin_lock_irqsave【转】
    Linux内核中的软中断、tasklet和工作队列详解【转】
    Linux 读写memory操作,devmem直接访问物理内存地址【转】
    Linux性能之DVFS/cpufreq【转】
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4260831.html
Copyright © 2020-2023  润新知