等我们长的点了,我们就能表达自己的意思了。这时,可以给Speak增加一个参数:
void speak(char a[])
{
cout 《 "我在说:" 《 a 《 endl;
}
这个函数与原来的speak重名,但c++很聪明,知道在什么情况下调用哪个,所以我们可以把他加进类里:
class person
{
private:
char birthday[20];
char sex[10];
char name[20];
public:
person(char b[], char s[])
{
birthday = b;
sex = s;
}
void set_name(char n[])
{
strcpy(name,n);//strcpy,没忘吧?复制char类型要用这个,不要写成"name = n;"!
}
char *get_name()
{
return *name;
}
void speak()
{
cout 《 "我在牙牙学语!" 《 endl;
}
void speak(char a[])
{
cout 《 "我在说:" 《 a 《 endl;
}
}
然后调用它:
Int main()
{
person xiaoming("1985/1/1","male");
xiaoming.set_name("xiaoming");
xiaoming.speak();
xiaoming.speak("我饿了,我要喝奶");
}
两次调用,我们给了不同的参数,结果当然也是不同的。因为重载是靠参数的个数和类型来区别的,只要参数的个数和类型不同,c++就能分辨,知道调用哪一个。
构造函数也是函数,所以…
class person
{
private:
char birthday[20];
char sex[10];
char name[20];
public:
person()
{ }
person(char b[], char s[])
{
birthday = b;
sex = s;
}
void set_name(char n[])
{
strcpy(name,n);//strcpy,没忘吧?复制char类型要用这个,不要写成"name = n;"!
}
char *get_name()
{
return *name;
}
void speak()
{
cout 《 "我在牙牙学语!" 《 endl;
}
void speak(char a[])
{
cout 《 "我在说:" 《 a 《 endl;
}
};
注意到了吗,我加了这个函数:
person()
{ }
空的什么都没有,有什么用?
……
有时我们这样实例化对象:person xiaoming();
这是调用的就是这个构造函数!当然这么简单的事编译器可以替我们做,但我们还是不妨写上。
[本文共有 2 页,当前是第 2 页] <<上一页 下一页>>