C++类构造函数默认参数与成员初始化列表作用机制咨询
C++构造函数默认参数与成员初始化的疑问解答
咱们直接把问题拆成几个关键点说:
默认参数是“备用值”而非“固定值”
你给构造函数参数设置的=0是默认参数,它的作用是:当调用构造函数时如果没有传入对应位置的参数,才会用这个0作为 fallback 值;一旦你显式传入了参数(比如这里的1000和100),编译器就会直接使用你传入的值,默认值会被自动忽略——这是C++默认参数的基本规则,普通函数也遵循这个逻辑。成员初始化列表负责将构造函数参数值传递给成员变量
构造函数里的num_people(np), num_immunized(ni)是成员初始化列表,它的作用是把构造函数参数np和ni的当前值,直接初始化类的成员变量。这里因为你调用时传入了1000和100,所以np已经是1000,ni已经是100,初始化列表自然就把这两个值赋给了对应的成员变量,最终成员变量的值就是1000和100。
简单总结:默认参数仅在未传值时生效,传值后优先使用传入值;初始化列表只是把已经确定的参数值转交给成员变量而已。
内容的提问来源于stack exchange,提问作者pllb7998
相关产品推荐
相关产品推荐

