栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C++】类的构造函数的基本介绍(A basic introduction to constructors of classes)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C++】类的构造函数的基本介绍(A basic introduction to constructors of classes)

文章目录

前言一、构造函数

1.构造函数的产生形式及作用

1.产生:2.形式:3.作用 2.函数的调用时机

1.栈区调用时机2.堆区调用时机 3.构造函数的类型

1.默认构造函数2.无参数构造函数3.有参数的构造函数4.多个构造函数产生重载 4.成员函数的定义


前言

本节课是对类中的函数做介绍:构造函数


提示:以下是本篇文章正文内容,下面案例可供参考

一、构造函数 1.构造函数的产生形式及作用 1.产生:

普通数据成员不能够在类内直接赋值,因为只有对象创建的时候才分配空间。那么数据如何赋初始值呢?可以定义一个成员函数,对成员统一赋值

class a
{
public:
	int c;
	void fun(int b)
	{
		c=b;
	}
}
2.形式:

类名(参数列表){}
注意:他没有返回值

class a
{
public:
	int c;
	a(int b)
	{
		c = b;
	}
};

除了没有返回值,他基本和普通的函数一模一样了,我们可以放心大胆的用。

3.作用

对数据成员赋初始值

2.函数的调用时机

我们在创建对象时及会调用
那么我们知道,创建类可以创建栈区对象也可以创建堆区对象

1.栈区调用时机
class a
{
public:
	int c;
	a()
	{
		c = 12;
	}
};

int main()
{
	a aa;

	return 0;
}

首先 我们在main函数中创建了一个a的栈区对象 他的构造函数调用时机是当代码创建了一个a栈区对象时,他就会立马调用构造函数

2.堆区调用时机

我们知道,创建堆区对象可以使用两种方式:malloc和new。
but!使用malloc 的方式是不会调用构造函数的,但是使用new会调用类中的构造函数

class a
{
public:
	int c;
	a()
	{
		c = 12;
	}
};

int main()
{
	a* aa = new a;//不会调用构造函数
	a* aaj = (a*)malloc(sizeof(a));//不会调用构造函数

	return 0;
}
3.构造函数的类型 1.默认构造函数

什么都不做,他没有参数,代码段也没有语句,but 必须要有这个东西
如下:

class C_l
{
public:
	C_1()
	{

	}
};

注意: 只要用户声明构造函数,默认的构造函数就没有了

2.无参数构造函数
class C_l
{
public:
	C_1()
	{
		//用户可以自己写代码在这里面,创建对象时就会执行里面的语句
		cout<<"hello world"< 
3.有参数的构造函数 
class C_l
{
public:
	C_l(int a)
	{
		cout << a << endl;
	}
};

在有参数的构造函数中我们要注意创建对象时的传递参数。
类名 对象(参数);
类名 *对象 = new 类名(参数);

有参数的构造函数怎么传递参数:

	//类名 对象(参数);
	//类名 *对象 = new 类名(参数);

	//1.
	C_l c_l(12);
	//2.
	C_1 *c_2 = new C_l(13);
4.多个构造函数产生重载
class C_l
{
public:
	C_l(int a)
	{
		cout << a << endl;
	}

	C_l()
	{
		cout << "a" << endl;
	}

	C_l(double c)
	{
		cout << c << endl;
	}
};

不会重载的小伙伴可以去看看我之前的C++内容

4.成员函数的定义

意义:多文件

类内声明函数

class aa
{
public:
	void fun();
}

类外定义函数:
返回值 类名作用域 函数名(){}

void aa::fun()
{
	cout<<"你好"<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/779087.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号