您现在的位置是:首页 > 编程 > 

【C++有点难】默认成员函数:构造函数

2025-07-19 16:39:28
【C++有点难】默认成员函数:构造函数 默认成员函数有啥?总的来说嘞,有六种:构造函数,析构函数,拷贝构造函数,赋值重载函数,取地址重载函数其实我刚知道有六种的时候,也是很头大,但经过我不但地旁敲侧击,终于!我逐渐明白第一种:构造函数的神奇那学习之前,肯定要了解一下构造函数的概念吧?构造函数的概念:构造函数作为一种默认成员函数,肯定就有它又具有的特点函数名与类名相同。 ⽆返回值。 (返回值啥都不需

【C++有点难】默认成员函数:构造函数

默认成员函数有啥?

总的来说嘞,有六种:构造函数,析构函数,拷贝构造函数,赋值重载函数,取地址重载函数

其实我刚知道有六种的时候,也是很头大,但经过我不但地旁敲侧击,终于!

我逐渐明白第一种:构造函数的神奇

那学习之前,肯定要了解一下构造函数的概念吧?

构造函数的概念:

构造函数作为一种默认成员函数,肯定就有它又具有的特点

  • 函数名与类名相同。
  • ⽆返回值。 (返回值啥都不需要给,也不需要写void,不要纠结,C++规定如此)
  • 对象实例化时系统会⾃动调⽤对应的构造函数。
  • 构造函数可以重载。
  • 如果类中没有显式定义构造函数,则C++编译器会⾃动⽣成⼀个⽆参的默认构造函数,⼀旦⽤⼾显式定义编译器将不再⽣成。

以上就是构造函数的特点,反正我看得算是一头雾水,这在叭叭叭讲得啥呀

可是想想存在即合理,便有它的便利之处

函数构造的特征解析:

拿Date函数来举例如下:

代码语言:javascript代码运行次数:0运行复制
#include<iostream>
using namespace std;
class Date
{
public:
	Date(int year = 1, int month = 1, int day = 1) {
		_year = year;
		_month = month;
		_day = day;
	}
	void Print() {
		cout << _year << "-" << _month << "-" << _day;

	}
	

private:
	int _year;
	int _month;
	int _day;
};



int main()
{
	Date d1(2024, 12, 20);
	return 0;
}

可以直接拿类的名称来用,不用自己再整一个名字,是不是就少了要一直调用的麻烦?

不用返回值,也正好说明了它没有返回类型,就不需要在意啥类型了,方便

还会自动调用你的对象(只要你有个对象),方便

但在调用的时候,这种是不可有的:

报错的哦

了解了构造函数的用法,我们接下来要了解默认构造函数又分为这几类:⽆参构造函数、全缺省构造函数、我们不写构造时编译器默认⽣成的构造函数。

这又是啥,我第一次看到又是一脸懵,那还是看例子吧:

一个是带参构造函数,一个是无参构造函数

代码语言:javascript代码运行次数:0运行复制
#include<iostream>
using namespace std;
class Date
{
public:
	Date(int year , int month, int day ) {
		_year = year;
		_month = month;
		_day = day;
	}
	Date() {
		_year = 1;
		_month = 1;
		_day = 1;
	}
	void Print() {
		cout << _year << "-" << _month << "-" << _day<<endl;
	}
private:
	int _year;
	int _month;
	int _day;
};
int main()
{
	Date d1(2024,12,20);
	d1.Print();

	Date d2;
	d2.Print();

	return 0;
}

运行结果:

还有一个最最最重要的点:就是⽆参构造函数、全缺省构造函数、我们不写构造时编译器默认⽣成的构造函数这三种默认的构造函数不能同时存在只能存在一个!

还有呢就是,如果你自己没有定义构造函数的话,编译器会自动为你生成一个默认构造函数,如果你写了,那就不会生成啦!我们的编译器还是很懂我们的哈哈哈

这些就是我对构造函数的简单理解啦,希望能帮助到你哦

佬们也可以及时指出我的不足哦~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-01-21,如有侵权请联系 cloudcommunity@tencent 删除函数c++int编译器对象

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1143604.html

相关标签:无
上传时间: 2025-07-19 09:29:28
留言与评论(共有 11 条评论)
本站网友 diy电子
18分钟前 发表
那就不会生成啦!我们的编译器还是很懂我们的哈哈哈这些就是我对构造函数的简单理解啦
本站网友 专治各种不服
9分钟前 发表
一个是无参构造函数代码语言:javascript代码运行次数:0运行复制#include<iostream> using namespace std; class Date { public
本站网友 王青山
19分钟前 发表
但经过我不但地旁敲侧击
本站网友 保利东湾
4分钟前 发表
分享自作者个人站点/博客
本站网友 施万中
24分钟前 发表
则C++编译器会⾃动⽣成⼀个⽆参的默认构造函数
本站网友 利比亚港口
1分钟前 发表
如果类中没有显式定义构造函数
本站网友 天津丝芙兰
12分钟前 发表
int day = 1) { _year = year; _month = month; _day = day; } void Print() { cout << _year << "-" << _month << "-" << _day; } private
本站网友 44313
6分钟前 发表
也是很头大
本站网友 大亚湾二手房网
3分钟前 发表
肯定要了解一下构造函数的概念吧?构造函数的概念:构造函数作为一种默认成员函数
本站网友 建筑承包商
26分钟前 发表
方便还会自动调用你的对象(只要你有个对象)