C++57个入门知识点_19_ 构造函数的作用及写法(作用:用于对象初始化,定义时候就定义对象初值;写法:函数名是类名;不写函数返回值;参数可以有也可以没有;使用:CStudent stu(“张三“)

本文介绍了C++中的构造函数,它的主要作用是在对象创建时进行初始化。通过示例展示了传统的成员函数赋值方式,然后引入构造函数的概念,使得在定义对象时就能直接赋初值,简化了对象初始化的步骤。此外,还提供了构造函数的写法,并给出了使用构造函数初始化对象的代码示例。
摘要由CSDN通过智能技术生成

上篇C++57个入门知识点_18_ 类的大小+成员函数性质+this指针(类大小由成员变量决定;类对象数据独立,成员函数共用;this指针:谁创建指向谁,谁使用成员函数指向谁;类成员函数指针写法及调用)介绍了类大小及其的成员函数调用时会隐藏传递一个this指针。本篇开始将会介绍C++中一个重要概念-构造函数

总结:
1.构造函数的作用及写法:

  • 作用: 用于对象的初始化,在定义的时候就定义对象的初值
  • 写法: 函数名是类名;不写函数的返回值;参数可以有也可以没有

1.给对象成员变量赋值的一般方法

举个例子:写一个程序来描述班级中的学生,需要写出这样的程序,按照之前所学需要先封装一个类,再创建一个对象,利用对象的函数再对成员变量进行赋值,当需要创建多个数据时就需要重复上面动作。

以下代码即为利用上述过程创建多个学生信息的方式:

#include <iostream>

class CStudent {

public:

	void SetName(char* pszName)
	{
		//存在缓冲区溢出的风险,pszName并不知道指向的字符串的大小,若大于255,则可能将原来字符串末尾覆盖
		strcpy_s(m_szName, pszName);//m_szName并未定义大小,存在溢出风险,系统提示使用strcpy_s
	}

private:
	int m_nStudID;//学号
	char m_szName[255];//255个字节的缓冲区数组,姓名
};

int main(int argc, char* argv[])
{
    //创建类的对象,对象利用函数对成员变量进行赋值
	CStudent stu;
	stu.SetName("张三");

	CStudent stu2;
	stu2.SetName("李四");
	return 0;
}

上面的代码虽然可以实现我们的需求,但是创建对象的初始值的过程比较复杂,需要创建对象,并利用对象的函数对成员进行赋初值。

2. 构造函数实现对象的初始化


思考我们在之前的学习中,对一个变量在定义的时候就可以进行赋初值,例如 int n=5,那如何实现给对象的成员赋初值呢?
此处就引出构造函数的定义,我们在定义类的对象时,希望在定义时就给其赋初值,因此C++中定义了构造函数。

  • 构造函数即:用于对象的初始化,在定义的时候就定义对象的初值
  • 构造函数写法:函数名即为类名;不写函数的返回值(写了就会编译不过);参数可以有也可以没有

以下代码使用构造函数实现初始化:


#include <iostream>

class CStudent {

public:
	//构造函数
	CStudent(const char* pszName) {
		strcpy_s(m_szName, pszName);
	
	}

	void SetName(char* pszName)
	{
		//存在缓冲区溢出的风险,pszName并不知道指向的字符串的大小,若大于255,则可能将原来字符串末尾覆盖
		strcpy_s(m_szName,pszName);//m_szName并未定义大小,存在溢出风险,系统提示使用strcpy_s

		}

private:
	int m_nStudID;//学号
	char m_szName[255];//255个字节的缓冲区,姓名
};

int main(int argc,char* argv[])
{
	
	//C++中给对象进行赋初值的方法,按照构造函数参数要求写入数据,当做一个函数使用
     CStudent stu("张三");
	return 0;
}

3.学习视频地址:C++57个入门知识点_19_ 构造函数的作用及写法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十月旧城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值