现在科技发达了,能克隆绵羊了。也许,有一天,我们能克隆人类……
int main()
{
person xiaoming("1985/1/1","male");
person xiaoxiaoming(xiaoming);
}
不过现在还不行,因为科技不发达。那怎么办那?
研究,再研究;思考,再思考。c++的创始人终于想到了--复制(拷贝)构造函数!(这时还没有克隆,看来计算机总是走在时代前列的!)
person(person & p)
{
birthday = p.birthday;
strcpy(sex,p.sex);
}
这也是重载的列子!特别的重载!这就是穿说中的复制构造函数!把它加进类里,我们就能在main函数克隆人了!
不过还有个问题,那就是&,这个是……?
难道是传说中的引用?yes,就是它!
干什么用的?别问我,自己看书。
我只能说,这个东西很有用的,这绝对是c++的一大发明!
这里又是干什么用的?
……
我们知道,当调用函数时,形参是从新建立的,这样会耗费一定时间,降低效率;但加上了&,情况就不同了,这样效率会高点。
但是,加了&会不会改变实参的值哪?当然有可能了!
所以当我们不想改变参数的值时,可以在前面加上const,这样的话,当你想改变实参值时,编译器就会报错,免去你修改逻辑错误的麻烦:
person(const person & p){……}
当然,一般在构造函数中,你不会改变对象的值(想做的话没问题,我只能说你是疯子),所以不加const没问题,不过既然老师要求吗,大家还是写好了。
但请注意,构造函数中参数的&是一定要加的!那我不加哪?我不说,你自己试试吧。
顺便说一下,"&"还是不要读作"and"为好,"and"应该是"&&"才对!
"&"在c++中是有三种意思的:
1.运算符:与;
2.取地址符;
3.引用(reference)
加在参数里,那一定是引用,读作"reference",而不是"and"!
顺便说一下,const,&这些东西比较零散,但很有用,c++是一点一点发展到今天的,这些都难以避免,这也是c++比Java难学的地方。