2024年c语言中default的作用 c语言default怎么用大全

人的记忆力会随着岁月的流逝而衰退,写作可以弥补记忆的不足,将曾经的人生经历和感悟记录下来,也便于保存一份美好的回忆。写范文的时候需要注意什么呢?有哪些格式需要注意呢?下面是小编帮大家整理的优质范文,仅供参考,大家一起来看看吧。

c语言中default的作用 c语言default怎么用篇一

c语言是一门实践性和动手能力要求很高的大学主干课程,但是c语言实验课的教学一直不受重视,教学效果也不太理想。下面小编就跟你们详细介绍下c语言中default的用法,希望对你们有用。

a.类中默认的成员函数

1.默认构造函数

2.默认析构函数

3.拷贝构造函数

4.拷贝赋值函数

5.移动构造函数

6.移动拷贝函数

b.类中自定义的操作符函数

or

or&

or&&

or*

or->

or->*

or new

or

同时c++规定,一旦程序员实现了这些函数的自定义版本,则编译器不会再自动生产默认版本。注意只是不自动生成默认版本,当然还是可手动生成默认版本的。当我们自己定义了待参数的构造函数时,我们最好是声明不带参数的版本以完成无参的变量初始化,此时编译是不会再自动提供默认的无参版本了。我们可以通过使用关键字default来控制默认构造函数的生成,显式地指示编译器生成该函数的默认版本。比如:

classmyclass

{

public:

myclass()=default; //同时提供默认版本和带参版本,类型是pod的

myclass(inti):data(i){}

private:

int data;

};

有些时候我们希望限制默认函数的生成。典型的是禁止使用拷贝构造函数,以往的做法是将拷贝构造函数声明为private的并不提供实现,这样当拷贝构造对象时编译不能通过,c++11则使用关键字显式指示编译器不生成函数的默认版本。比如:

classmyclass

{

public:

myclass()=default;

myclass(constmyclass& )=;

......

}

当然,一旦函数被过了,那么重载该函数也是非法的,该函数我们习惯上称为删除函数。

上面我们已经看到在类中我们可用default和修饰成员函数,使之成为缺省函数或者删除函数,在类的外面,default可以在类定义之外修饰成员函数,比如:

classmyclass

{

public:

myclass()=default;

myclass() &operator=(constmyclass& );

);

//在类的定义外用default来指明缺省函数版本

inlinemyclass&myclass::operator=(constmyclass& )=default;

还可以myclass&myclass::operator=(constmyclass& )=default;但是这种类外定义合成的成员就不是内联函数。

与=default 不同,=必须出现在函数的第一次声明中。因为一个默认的成员只影响为这个成员生成的代码,因此=default 直到编译生成代码时才需要,而编译器必须早早知道一个函数是否是删除的,以便禁止试图使用它的操作。

一般情况下,析构函数不能定义为删除的,因为如果析构函数被删除,就无法删除此类型的对象了。对于一个删除了析构函数的类型,编译器将不允许定义该类型的变量或创建该类型的临时对象,而且如果一个类有某个成员的类型删除了析构函数,也不能定义该类的变量或临时对象,因为一个成员的析构函数是删除的,则该成员无法销毁,包含它的类也就没法销毁。虽然对于删除了析构函数的.类型,我们不能定义这种类型的变量或成员但可以动态分配这种类型的对象,比如:

structnodtor{

nodtor()=default;

~nodtor()=default;

};

nodtor *p=new nodtor();//正确,但是我能 p

但是有时析构函数也是可以的,这样做的目的是我们在指定内存位置进行内存分配时并不需要析构函数来完成对象级别的清理,这时我们可显示删除析构函数来限制自定义类型在栈上或者静态的构造。

关于的显式删除,并非局限于成员函数,比如:

voidfunc(inti){};

void func(char c)=; //显式删除char版本

int main()

{

func(3);

func('c’); //无法编译通过

return 0;

}

这里因为func的char版本已经被删除,故func('c')会编译失败。由此我们也知default是只局限作用于类的部分成员函数的。于是我们还可用来避免不必要的隐式数据类型转换。比如:

classmyclass

{

public:

myclass(inti){};

myclsss(char c)=; //删除char版本的构造函数

};

void fun(myclass m){}

int main()

{

func(3);

func('a'); //编译不能通过

myclassm1(3);

myclass m2('a'); //编译不能通过

}

这是因为char版本的构造函数被删除后,试图从char构造myclass对象的方式是不允许的了。但去掉这句的函数删除后,编译器会隐式的将a转换为整型使得编译通过,调用的是整型构造函数,这可能并不是你所想要的。

但是如果这样:

classmyclass

{

public:

myclass(inti){};

explicit myclsss(char c)=; //删除explicit的char版本的构造函数

};

void fun(myclass m){}

int main()

{

func(3);

func('a'); //编译可通过

myclassm1(3);

myclass m2('a'); //编译不能通过

}

将构造函数explicit后,构造函数一样的还是不能发生char的构造,因为char构造版本被删除了,但在func的调用中,编译器会尝试将c转换为int,即func(\a')会调用一次myclass(int )构造,顺利通过编译。于是我们不提倡explicit和混用。对与普通函数也有类型的效果。

的用法还包括删除operator new操作符,编码在堆上分配该类的对象

如:void* operator new(std::size_t)=;

合成的拷贝控制成员可能是删除的,如果一个类有数据成员不能默认构造、拷贝、复制或销毁,则对应的成员函数将被定义为删除的。因此:

如果类的某个成员的析构函数是删除的或不可访问的,那么类的合成析构函数被定义为删除的。

如果类的某个成员的拷贝构造函数是删除的或不可访问的,则类的合成拷贝构造函数也被定义为删除的。

如果类的某个成员的拷贝赋值运算符是删除的或不可访问的,或是类有一个const的或引用成员,则类的合成拷贝赋值运算符被定义为删除的。

如果类的某个成员的析构函数是删除的或不可访问的,或是类有一个引用成员,它没有类内初始化器,或是类有一个const成员,它没有类内初始化器且其类型未显示定义默认构造函数,则该类的默认构造函数被定义为删除的

s("content_relate");

【c语言中default的用法】相关文章:

c语言中assert用法

12-03

c语言中的assert用法

12-19

c语言中free的用法

12-09

c语言中bit的用法

12-07

c语言中sscanf的用法

11-17

c语言中time函数的用法

12-21

c语言中map的基本用法

12-18

c语言中map的用法简介

12-18

c语言中char的用法简介

12-16

猜你感兴趣
2024年c语言中default的作用 c语言default怎么用大全

2024年c语言中default的作用 c语言default怎么用大全

人的记忆力会随着岁月的流逝而衰退,写作可以弥补记忆的不足,将曾经的人生经历和感悟记录下来,也便于保存一份美好的回忆。写范文的时候需要注意什么呢?有哪些格式需要注意呢?下面是小编帮大家整理的优质范文,仅供参考,大家一起来看看吧。c语言中def...

其他范文 2024-04-25
c语言跳出循环break汇总

c语言跳出循环break汇总

范文为教学中作为模范的文章,也常常用来指写作的模板。常常用于文秘写作的参考,也可以作为演讲材料编写前的参考。范文书写有哪些要求呢?我们怎样才能写好一篇范文呢?以下是我为大家搜集的优质范文,仅供参考,一起来看看吧c语言跳出循环break篇一...

其他范文 2024-04-25
最新工程量清单编制的过程优秀

最新工程量清单编制的过程优秀

每个人都曾试图在平淡的学习、工作和生活中写一篇文章。写作是培养人的观察、联想、想象、思维和记忆的重要手段。范文书写有哪些要求呢?我们怎样才能写好一篇范文呢?以下是我为大家搜集的优质范文,仅供参考,一起来看看吧工程量清单编制的过程篇一 大家理...

其他范文 2024-04-25
二建施工管理第二章好难 二建施工管理讲义及重点笔记精选

二建施工管理第二章好难 二建施工管理讲义及重点笔记精选

每个人都曾试图在平淡的学习、工作和生活中写一篇文章。写作是培养人的观察、联想、想象、思维和记忆的重要手段。大家想知道怎么样才能写一篇比较优质的范文吗?这里我整理了一些优秀的范文,希望对大家有所帮助,下面我们就来了解一下吧。二建施工管理第二章...

其他范文 2024-04-25
初级会计实务考前冲关题答案汇总

初级会计实务考前冲关题答案汇总

每个人都曾试图在平淡的学习、工作和生活中写一篇文章。写作是培养人的观察、联想、想象、思维和记忆的重要手段。范文怎么写才能发挥它最大的作用呢?下面是小编帮大家整理的优质范文,仅供参考,大家一起来看看吧。初级会计实务考前冲关题答案篇一 我相信所...

其他范文 2024-04-25
初级会计实务讲解 初级会计实务该怎么学实用

初级会计实务讲解 初级会计实务该怎么学实用

范文为教学中作为模范的文章,也常常用来指写作的模板。常常用于文秘写作的参考,也可以作为演讲材料编写前的参考。范文怎么写才能发挥它最大的作用呢?这里我整理了一些优秀的范文,希望对大家有所帮助,下面我们就来了解一下吧。初级会计实务讲解 初级会计...

其他范文 2024-04-25
2024年static和const关键字的作用 c语言static和const的区别实用

2024年static和const关键字的作用 c语言static和const的区别实用

在日常学习、工作或生活中,大家总少不了接触作文或者范文吧,通过文章可以把我们那些零零散散的思想,聚集在一块。那么我们该如何写一篇较为完美的范文呢?下面是小编帮大家整理的优质范文,仅供参考,大家一起来看看吧。static和const关键字的作...

其他范文 2024-04-25
2024年贵州省初级会计职称报名公告查询实用

2024年贵州省初级会计职称报名公告查询实用

无论是身处学校还是步入社会,大家都尝试过写作吧,借助写作也可以提高我们的语言组织能力。范文怎么写才能发挥它最大的作用呢?这里我整理了一些优秀的范文,希望对大家有所帮助,下面我们就来了解一下吧。贵州省初级会计职称报名公告查询篇一 2017年贵...

其他范文 2024-04-25
票据防伪要点实用

票据防伪要点实用

范文为教学中作为模范的文章,也常常用来指写作的模板。常常用于文秘写作的参考,也可以作为演讲材料编写前的参考。大家想知道怎么样才能写一篇比较优质的范文吗?下面我给大家整理了一些优秀范文,希望能够帮助到大家,我们一起来看一看吧。票据防伪要点篇一...

其他范文 2024-04-25
最新二级建造师公路工程考试模拟试题模板

最新二级建造师公路工程考试模拟试题模板

在日常的学习、工作、生活中,肯定对各类范文都很熟悉吧。范文书写有哪些要求呢?我们怎样才能写好一篇范文呢?下面我给大家整理了一些优秀范文,希望能够帮助到大家,我们一起来看一看吧。二级建造师公路工程考试模拟试题篇一 1、水泥混凝土路面横向裂缝产...

其他范文 2024-04-25
最新一级建造师考试窍门 一级建造师考试备考技巧精选

最新一级建造师考试窍门 一级建造师考试备考技巧精选

人的记忆力会随着岁月的流逝而衰退,写作可以弥补记忆的不足,将曾经的人生经历和感悟记录下来,也便于保存一份美好的回忆。写范文的时候需要注意什么呢?有哪些格式需要注意呢?下面是小编帮大家整理的优质范文,仅供参考,大家一起来看看吧。一级建造师考试...

其他范文 2024-04-25
最新即期利率与远期利率计算优质

最新即期利率与远期利率计算优质

人的记忆力会随着岁月的流逝而衰退,写作可以弥补记忆的不足,将曾经的人生经历和感悟记录下来,也便于保存一份美好的回忆。大家想知道怎么样才能写一篇比较优质的范文吗?下面是小编帮大家整理的优质范文,仅供参考,大家一起来看看吧。即期利率与远期利率计...

其他范文 2024-04-25
初级会计师报名常见问题及解答题大全

初级会计师报名常见问题及解答题大全

在日常学习、工作或生活中,大家总少不了接触作文或者范文吧,通过文章可以把我们那些零零散散的思想,聚集在一块。写范文的时候需要注意什么呢?有哪些格式需要注意呢?这里我整理了一些优秀的范文,希望对大家有所帮助,下面我们就来了解一下吧。初级会计师...

其他范文 2024-04-25
商品期货标准合约 期货品种和合约的选择优秀

商品期货标准合约 期货品种和合约的选择优秀

在日常的学习、工作、生活中,肯定对各类范文都很熟悉吧。写范文的时候需要注意什么呢?有哪些格式需要注意呢?下面是小编帮大家整理的优质范文,仅供参考,大家一起来看看吧。商品期货标准合约 期货品种和合约的选择篇一 期货合约是指由期交所统一制定、规...

其他范文 2024-04-25
2024年计算机二级9月份考试题库精选

2024年计算机二级9月份考试题库精选

每个人都曾试图在平淡的学习、工作和生活中写一篇文章。写作是培养人的观察、联想、想象、思维和记忆的重要手段。范文怎么写才能发挥它最大的作用呢?以下是小编为大家收集的优秀范文,欢迎大家分享阅读。计算机二级9月份考试题库篇一 2017年计算机二级...

其他范文 2024-04-25
2024年期货从业资格考试各题型的答题技巧和方法实用

2024年期货从业资格考试各题型的答题技巧和方法实用

在日常的学习、工作、生活中,肯定对各类范文都很熟悉吧。相信许多人会觉得范文很难写?接下来小编就给大家介绍一下优秀的范文该怎么写,我们一起来看一看吧。期货从业资格考试各题型的答题技巧和方法篇一 在期货从业资格考试中,各题型的答题技巧大家有掌握...

其他范文 2024-04-25
最新冷库节能减排精选

最新冷库节能减排精选

每个人都曾试图在平淡的学习、工作和生活中写一篇文章。写作是培养人的观察、联想、想象、思维和记忆的重要手段。写范文的时候需要注意什么呢?有哪些格式需要注意呢?下面我给大家整理了一些优秀范文,希望能够帮助到大家,我们一起来看一看吧。冷库节能减排...

其他范文 2024-04-25
2024年如何借钱具有法律效力 怎么借钱受法律保护大全

2024年如何借钱具有法律效力 怎么借钱受法律保护大全

在日常的学习、工作、生活中,肯定对各类范文都很熟悉吧。相信许多人会觉得范文很难写?以下是小编为大家收集的优秀范文,欢迎大家分享阅读。如何借钱具有法律效力 怎么借钱受法律保护篇一 导语:由于熟人社会的思维习惯和法律观念的缺乏,很多人无法掌握正...

其他范文 2024-04-25
期货投资的收益和风险 期货交易风险揭示优秀

期货投资的收益和风险 期货交易风险揭示优秀

在日常学习、工作或生活中,大家总少不了接触作文或者范文吧,通过文章可以把我们那些零零散散的思想,聚集在一块。相信许多人会觉得范文很难写?下面是小编帮大家整理的优质范文,仅供参考,大家一起来看看吧。期货投资的收益和风险 期货交易风险揭示篇一...

其他范文 2024-04-25
最新期货怎样看k线知涨跌优秀

最新期货怎样看k线知涨跌优秀

无论是身处学校还是步入社会,大家都尝试过写作吧,借助写作也可以提高我们的语言组织能力。大家想知道怎么样才能写一篇比较优质的范文吗?以下是小编为大家收集的优秀范文,欢迎大家分享阅读。期货怎样看k线知涨跌篇一 导语:在期货操作中,如何有效的看懂...

其他范文 2024-04-25