freesoft 发表于 2007-9-2 08:54:57

编程马拉松(15)重载


#include <iostream>//主要说明一下函数重载及拷贝函数
using namespace std;

class test
{
protected:
      char name;
      char address;
      float zf;
public:
//      test(){}//这是一个无参数的构造函数
      test(char *name,char *address) //第一个构造函数用来输入:姓名,地址
      { //函数重载只有在参数不同或类型不同的情况下
                strcpy(test::address,address);
                strcpy(test::name,name);
      }
//下面这个函数可以改一下。改为:
/*         float test0(float shuxue,float yuwen,float yingyu)//来输入:数学,语文,英语并算总分。
      {
                zf=0;
                zf=shuxue+yuwen+yingyu;
                return zf;
      }
这样可把main函数里写成
test a;
float x;
x=a.test0(shuxue0,yuwen0,yingyu0);
cout<<a<<endl;
//a.test0=12345;这样写是错的。
*/

         test(float shuxue,float yuwen,float yingyu)//来输入:数学,语文,英语并算总分。
      {
                zf=0;
                zf=shuxue+yuwen+yingyu;
      //      return zf;
      }
/*      test(test &temp0) //拷贝函数,系统自动提供,也可以不写。
      {
                strcpy(test::address,temp0.address);
                strcpy(test::name,temp0.name);
      } */
      ~test() //这里是空析构,有没有都一样
      {
                        
      }
      void show()
      {
      cout<<"名称:"<<name
                <<"地址:"<<address
                <<"总分:"<<zf<<endl;
      }
};



void main()
{
      cout<<"请输入学生资料:"<<endl;
      //cin>>getin.name>>getin.address;这样写是不对的,因为这两个变量是保护的。
      char name0="noinput",address0="noinput";
      float shuxue0=0,yuwen0=0,yingyu0=0;
      cout<<"姓名:";cin>>name0;
      cout<<"地址:";cin>>address0;
      cout<<"数学:";cin>>shuxue0;
      cout<<"语文:";cin>>yuwen0;
      cout<<"英语:";cin>>yingyu0;

      test getin0(name0,address0);
      test getin1(shuxue0,yuwen0,yingyu0);
      getin0.show(); //大家可以看看这两个show的区别。
      getin1.show();
}

maclaurin 发表于 2007-12-2 20:09:05

楼主要是能用通俗的语言讲解一下函数重载的解析过程对大家帮助更大

s91 发表于 2007-12-4 22:24:41

光有代码,应该再加点说明就好了。
页: [1]
查看完整版本: 编程马拉松(15)重载