上篇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_ 构造函数的作用及写法