C++学习

构造函数是C++中用于初始化类的对象的特殊函数,确保数据成员有合适的初始值。它与类名相同,无返回值类型,在对象创建时自动调用。如果用户未定义构造函数,编译器会生成一个无参的默认构造函数,除非已经定义了其他构造函数。无参构造函数在某些情况下可能是有意义的,比如当类包含其他类的对象时。
摘要由CSDN通过智能技术生成

构造函数

空类并不是说什么都没有,编译器会给该类自动生成一些默认的成员方法将编译器生成的方法称为默认的成员方法

class Date
{
public:
	Date(int year, int month, int day)  //构造函数
	{
		_year = year;
		_month = month;
		_day = day;
	}

	void Init(int year, int month, int day)
	{
		_year = year;
		_month = month;
		_day = day;
	}

	void print()
	{
		cout << _year << _month << _day << endl;
	}
private:
	int _year;
	int _month;
	int _day;
};

int main()
{
    Date d(2023,2,23);  //调用构造函数给成员变量赋初始值
    d.print;
}

构造函数是一个特殊的成员函数,保证每个数据成员有合适的初始值

        1.函数名必须与类名相同,并且不能有返回值类型

        2.在创建对象时编译器有调用,只在对象的生命周期中调用一次

        3.构造函数不是为了给对象创建空间,只是为了设置合适的初始值

        4.构造函数可以重载

        5.类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数,一旦用户显示定义编译器将不在生成如

Date()
{}

(即没有定义构造函数时,编译器会自动生成,但无参数)

   无参数的构造函数不一定没有意义(一般没有意义)

  # C++语法规定:

                在类中,如果用户没有显示定义任何构造函数,则编译器一定会生成一份无参的构造函数。

  # 编译器实现:

                在具体实现时,可能和语法稍微有些出入

                因为编译器可能会考虑程序运行效率问题,如果编译器感觉生成的构造方法没有意义,则不再生成了(如果A类中包含有B类的对象,A类没有显示定义任何构造函数,而B类定义了无参的构造函数,此时编译器一定会给A类生成一个无参的构造函数)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值