构造函数

构造函数的作用以及写法:https://www.bilibili.com/video/BV1jJ41127dx/?spm_id_from=trigger_reload

构造函数的调用:https://www.bilibili.com/video/BV1jJ41127RB/?spm_id_from=trigger_reload

#include "stdafx.h"
#include <stdlib.h>
#include <string.h>

//构造与析构
//构造函数:类定义了一个对象,可以在定义的时候对其附一个初值;
//1.用于对象的初始化
//2.写法:
//    1)函数名必须是类名;2)不写函数的返回值;3)可以有参数>=0;
//3.构造函数允许函数的重载
//4.如果类中一个构造函数都没有,编译器会提供一个默认构造函数(无参数的构造,可能会被优化)
/新添加标准:
//1).explicit关键字:只支持显示调用构造函数,不允许隐士转换
//2)=default 类中:CStudent() = delete;表示删除CStudent构造函数
//3)=delete       CStudent() = default ;表示显示的指出使用默认的构造函数

//描述班级学生

class CStudent {
public:
//构造函数
//没有参数的构造函数
    CStudent (){
// strcpy_s(m_szName,pszName);
printf("CStudnet()\r\n");
}
//一个参数的构造函数
    CStudent (char* pszName){   
// strcpy_s(m_szName,pszName);
printf("CStudnet()\r\n");
}
//两个参数的构造函数
    CStudent (int nStuID,char* pszName){
// strcpy_s(m_szName,pszName);
printf("CStudnet()\r\n");
}
    void SetName(char* pszName){
        strcpy_s(m_szName,pszName); //外部可能会引起缓冲区溢出 pszName=m_szName;
}

private:
    int m_nStuID;
    char m_szName[255];
};

int main()
{

CStudnet  stu = "张三"; //正确:CStudnet stu("张三") 或则CStudnet  stu=CStudnet("张三")
//CStudnet stu;
//stu.SetName("张三");

CStudnet stu2;    //编译不过
stu.SetName("李四");

};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值