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

02 构造函数+析构函数

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

02 构造函数+析构函数

构造函数
1)作用:用于对象的初始化 2)写法: a)函数名是类名 b)不能有函数的返回值 c)可以有多个参数 d)可以没有参数 3)构造函数允许函数重载 4)如果类中一个构造函数都没有,那么编译器会提供一个默认的构造函数(无参的构造,可能会被优化) 5)C11新添了几个关键字用法: a)explicit(明确的):只支持显示调用构造函数,不允许隐式转换
class Cstudent
{
public:
	explicit  Cstudent(const char* pName)
	{
		strcpy(m_name, pName);
	}
private:
	char m_name[32];
};
//"="在C++是一种隐式转换!
Cstudent someone ="张三";   //编译不通过,加了explicit关键字后不再支持隐式转换
Cstudent someone("张三");   //编译通过
b) delete(删除):表示禁止使用某函数 (可以删除默认构造函数)
class Cstudent
{
public:
	Cstudent()=delete;
private:
	char m_name[32];
};

Cstudent someone;  //编译不通过,默认构造函数已被删除
c)default(默认):表示使用默认的构造函数
class Cstudent
{
public:
	Cstudent()=default;
private:
	char m_name[32];
};
析构函数
1)作用:完成资源的反初始化,资源的释放 2)写法: a)类名前加上~ b)通常是由编译器决定调用时机,不需要手动调用(就算自己调用编译器最后还是会自己调用) c)不能有参数和返回值 3)析构函数不能重载 4)构造函数和析构函数通常是公有访问权限(public)
构造函数和析构函数的调用时机

栈上的局部对象调用时机

构造:声明该对象时构造 析构:对象出作用域时调用析构

int main()
{
	{
		Cstudent someone("张三");  //调用构造函数
	}  //调用析构函数
	return 0;
}
全局对象的调用时机

构造:进入到main函数之前 析构:出main函数之后

Cstudent someone();
 int main()
{
    //在进入main之前调用构造函数
    //出main后再调用析构函数
    return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/714440.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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