c++类和对象中
构造函数
构造函数是特殊的成员函数,名字虽然叫做构造,但他不是用来开空间的,而是来完成初始化工作的。当实例化对象完成后,就会调用构造函数来对成员变量进行初始化。
构造函数的特点:
(1)函数名与类名相同。
(2)无返回值(返回值什么都不写,void也不写)
(3)对象实例化时系统会自动调用构造函数
(4)构造函数可以重载
代码语言:javascript
AI代码解释
class Date
{
public:
//构造函数可以重载
Date()//无参构造函数
{
_year = 1;
_month = 1;
_day = 1;
}
Date(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 d1;//调用无参的构造函数
d1.print();
Date d2(2024, 7, 26);//调用带参的构造函数
d2.print();
return 0;
}

(5)如果类中没有显示定义构造函数,那么c++编译器会自动生成一个无参的默认构造函数。
如果类中定义了,编译器将不会再生成。
代码语言:javascript
AI代码解释
class Date
{
public://调用编译器自动生成的构造函数
void print()
{
cout << _year << "年" << _month << "月" << _day << "日" << endl;
}
private:
int _year;
int _month;
int _day;
};
int main()
{
Date d1;//调用无参的构造函数
d1.print();
return 0;
}

(6)无参构造函数,全缺省构造函数,和我们不写时编译器自动生成构造函数,都叫做默认的构造函数。但这三个函数不能同时存在,不然调用的时候会存在歧义。
说明: c++中,把类型分为内置类型和自定义类型。内置类型就是语言提供的原生数据类型,如int,double等,自定义类型就是我们使用class/struct等关键字自己定义的类型。
(7)我们不写时,编译器自动生成的构造函数,对内置类型成员变量没有要求,是否初始化取决于编译器。而对于自定义类型成员变量,要求调用这个成员变量的默认构造函数,若是没有默认构造函数,编译器就会报错。
3,析构函数
析构函数与构造函数的功能相反,它完成的不是对对象本身的销毁,不如局部对象是存在栈帧的,函数结束栈帧销毁,它就释放了,不需要我们管。c++规定,在对象销毁时,会调用析构函数,完成对象中资源清理释放工作。
析构函数的特点:
(1)析构函数名是在类名前加上~
(2)无参数,无返回值
(3)一个类只能有一个析构函数,若是未显示定义,系统会自动生成默认的析构函数。(4)对象生命周期结束时,系统会自动调用析构函数。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)