C++之构造函数

本文详细介绍了C++中的构造函数,包括其作用、构造函数初始化列表、默认构造函数的生成规则、显式构造函数的使用以及友元和静态成员的概念。重点阐述了构造函数在对象初始化、成员初始化及权限控制等方面的重要角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

构造函数
创建一个类类型的对象时,编译器会自动使用一个构造函数来初始化该对象,构造函数是一个特殊的、与类同名的成员函数,用于给每个数据成员设置适当的初始值。
构造函数通常使用一个构造函数初始化列表,来初始化对象的数据成员:

Sales_item(): units_sold(0), revenue(0.0) {}

构造函数初始化列表由成员名和带括号的初始值组成,跟在构造函数的形参表之后,并以冒号开头。

构造函数不能声明为const,创建类类型的const对象时,运行一个普通构造函数来初始化该对象,构造函数的工作是初始化对象,不管对象是否为const,都用一个构造函数来初始化该对象。
用于初始化一个对象的实参类型决定使用哪个构造函数。
构造函数初始化式

Sales_item::Sales_item(const string &book):
    isbn(book), nuits_sold(0), revenue(0.0) {}

构造函数可以定义在类的内部或外部,初始化式只在构造函数定义中而不是声明中指定。省略初始化列表并在构造函数的函数体内对数据成员赋值是合法的。构造函数分俩阶段执行:初始化阶段和计算阶段。计算阶段由构造函数函数体中的所有语句组成。
没有默认构造函数的类类型成员,以及const或引用类型成员,不管哪种类型,必须用初始化列表进行初始化。

X(int val): i(val), j(val) {}

初始化式可以是任意表达式:

Sales_item(const std::string &book, int cnt, double price):
     isbn(book), units_sold(cnt), revenue(cnt*price)  {}

类类型的数据成员的初始化式:<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值