C++_构造函数介绍

介绍

  • (1)构造函数的 作用
    1.为成员变量初始化
    2.分配资源
    3.设置对象的初始状态(默认值)

注意事项

  • (1)构造函数的 注意事项
    1.构造函数 没有返回类型
    2.构造函数 可以带参数
    3.构造函数 可以形成重载
    4.构造函数的 函数名 与 类名 相同
    5.构造函数 不需要用户显示调用(实例化对象时会自动调用) (PS:每次实例化只调用一次)
  • (2)默认构造函数 注意事项
    1.若一个 类 没有定义构造函数,会默认提供一个公有的 默认构造函数
    2.默认构造函数 一定是无参的
    3.无参的构造函数 不一定是 默认构造函数
    4.若遇到 缺省函数重载 默认构造函数 在同一作用域会形成 调用不明
  • (3)初始化表构造函数的 注意事项
    1.在构造函数中使用初始化表,指明类的成员变量如何初始化
    2.初始化表需要实参与形参类型相同、数量相同。否则调用的是缺省构造函数来初始化
    3.常成员变量必须在初始化表中显示初始化
    4.参数初始化顺序与初始化表中变量顺序无关,只与成员变量在 类 中声明的顺序有关

笔记扩充

空构造函数占 1字节
空结构体占 1字节
string类 占 28字节
测试代码:

class a{};
struct b{};
int main()
{
    cout << sizeof(a) << endl;
    cout << sizeof(b) << endl;
    string a;
	cout << sizeof(a) << endl;
}

源码

#include<iostream>
#include<string>

using namespace std;

class Student
{
	(3)默认构造函数
	//Student()
	//{
	//	cout << "默认构造函数" << endl;
	//}
public:
	//2.带参构造函数
	Student(string Name, int Score, int Number)
	{
		N_Name = Name;
		S_Score = Score;
		N_Number = Number;
	}
	//6.缺省构造函数重载(此处会与 默认构造函数 形成 调用歧义)
	Student(string Name = "lily",int Score = 130)
	{
		N_Name = Name;
		S_Score = Score;
		N_Number = 2;
	}

	//(3)初始化表
	Student(int Score, int Number) :S_Score(Score), N_Number(Number)
	{
		cout << "初始化表成功" << endl;
	}
	//打印结果
	void print()
	{
		cout << "名字:" << N_Name << "\n成绩:" << S_Score << "\n学号:" << N_Number << endl;
	}
private:
	string N_Name;
	int S_Score;
	int N_Number;
};
void main()
{
	//调用带参构造函数
	Student stu1("一航",100 ,1 );
	stu1.print();
	cout << endl;
	//调用缺省构造函数
	Student stu2("渔夫");
	stu2.print();
	cout << endl;
	//调用初始化表构造函数
	Student stu3(100,0);

	system("pause");
}

运行结果

名字:一航
成绩:100
学号:1

名字:渔夫
成绩:130
学号:2

初始化表成功
请按任意键继续. . .
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值