C++(重载,对象数组)

头文件:

重载三个构造函数,根据实例化对象传入的参数自动调用。

#ifndef RELOAD_H_INCLUDED
#define RELOAD_H_INCLUDED

#include <string.h>

//构造函数的重载
class Reload
{
private:
    char *myName;
    int myAge;

public:
    //重载三个构造函数
    Reload(int n = 20)
    {
        myName = new char[n];
    }

    Reload(char *name)
    {
        myName = new char[strlen(name) + 1];
        strcpy(myName,name);
    }

    Reload(char *name,int age)
    {
        myName = new char[strlen(name) + 1];
        strcpy(myName,name);
        myAge = age;
    }

    ~Reload(void)
    {
        delete[] myName;
    }
    //设置信息
    void setName(char *name){strcpy(myName,name);}
    void setAge(int n){myAge = n;}
    char *getName(void){return myName;}
    int getAge(void){return myAge;}
};


#endif // RELOAD_H_INCLUDED

源文件:

#include <iostream>

using namespace std;
#include <iomanip>
#include "reload.h"

int main()
{
    //调用第一个构造函数
    Reload andrew1;
    //调用第二个构造函数
    Reload andrew2("andrew is 2");
    //对象数组的初始化,当调用构造函数的参数多余1个时,需要显式调用构造函数,此处调用第三个
    Reload andrew3[3] = {Reload("tom",1),Reload("jerry",2),Reload("peter",3)};

    cout<<"\tmy friends\n";

    for(int i = 0;i<3;i++)
    {
        cout<<setw(10)<<andrew3[i].getName();
        cout<<setw(5)<<andrew3[i].getAge()<<endl;
    }
    //对象1
    andrew1.setName("andrew is 1");
    andrew1.setAge(22);

    //对象2
    andrew2.setAge(66);

    cout <<"andrew1:\t"<<andrew1.getName()<<"\t"<<andrew1.getAge()<< endl;
    cout <<"andrew2:\t"<<andrew2.getName()<<"\t"<<andrew2.getAge()<< endl;

    return 0;
}

运行结果:

注意:

1、函数重载时根据函数参数的个数或者类型来进行选择使用哪一个;但是不能根据函数的返回值来构建重载函数。

2、对象数组的初始化时,如果没有缺省构造函数,那么必须对数组中每个对象指定初始化值。

3、对象数组中每个对象的访问和其他类型的数组一样,采用下标的方式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值