为什么要用n来初始化num 这有何意义?
构造函数的意义是初始化数据成员,可是不是应该用0或者确定的东西来初始化么?
为什么这里会用n来初始化num,用nam来初始化name,还有用s来初始化sex?意义何在?既然初始化了还是个不确定的东西,为什么要初始化,直接用name,sex,num就好了,何必多此一举呀?
类用来产生对象。
同一个类可以产生许多不同的对象。
每个对象诞生(构造)时,有可能各不相同。
你,我,小明,苍老师,都是人类。
是人类的四个对象。
当这四个对象出生,他们都哇哇地哭。
都有脸有鼻子有手有脚。
但也有不同。
比如我有带把,小苍老师没有。
比如同样带把,我初始化时就有8cm。
而小明是0.8cm,你……医生拿来了放大镜,又无奈地丢弃,「快,实验室拿显微镜……」
这一切不同来自谁?
当然是上帝,
上帝调用了人类一个拥有265个入参的构造函数。
那些入参它们有一个神秘的名字。叫基因。
总之,类往往需要有一种能力,让调用者可在对象产生的时候就各不相同。
(本就应该如此嘛)
大千世界,万事万物的构造本就如此,所以c++的构造函数不一定将整数成员初始化为零,不一定将浮点数初始化为8.0 (0.8,0.000008以及0.0都有可能呀),这有什么奇怪的吗?
反过来才奇怪甚至恐慌的吧?!
每个中国人从医生怀中抱过来,
都是一个模子……
然后,
「来,家长,选一下,我院最新6万个初始化套餐可选,初始化医生来自韩国和泰国……」
……
你之所以无法第一时间理解「构造函数入参之于新对象之差异化」的作用,
很大部分的原因,
是因为,
年轻人,你把参数都传到了墙上,纸上。
你,还没有真正地,构造过一个人。
若有一天,你立在产床前,看著帅气强壮的宝宝,你哆嗦地掏出显微镜递给医生,医生微笑摇头:「无需,肉眼可识别。」
惊喜欲狂,感谢上苍!
彼时,你自然就懂得,构造一个对象时,为什么要可以传参数,又为什么这些个参数要落实到新对象身上的各个成员。
……
所谓 ——
人情练达好代码,世事洞悉通编程。
C++是世界上最入世的编程语言,恐怕没有之一,在我有生之年。
想从根子上学自然而然,快快乐乐(偶尔要接受调侃)地学好c++,为什么不买一本《白话C++》的上册呢?