2016 - 2024

感恩一路有你

explicit关键字 c 中的explicit关键字是什么意思知道?

浏览量:2339 时间:2021-03-16 03:48:01 作者:admin

c 中的explicit关键字是什么意思知道?

关键字explicit可以防止转换构造函数发生不允许的隐式转换。声明为显式的构造函数不能用于隐式转换。在C语言中,参数构造函数(或对除第一个参数外的所有参数都具有默认值的多参数构造函数)承担两个角色。

1是构造函数

2是默认的隐式类型转换运算符。所以,有时候我们写AAA=XXX这样的代码,XXX的类型正好是AAA单参数构造函数的参数类型,编译器会自动调用这个构造函数来创建AAA对象。它看起来既酷又方便。但在某些情况下(见下面的权威例子),这违背了我们的初衷。此时,我们需要在构造函数前面添加显式修饰符,以指定只能显式调用和使用构造函数,而不能隐式用作类型转换运算符。呵呵,看来还是光明正大为好。显式构造函数的函数分析:显式构造函数用于防止隐式转换。请参见以下代码:类test1{public:test1(int n){num=n}//普通构造函数private:int num}类test2{public:explicit test2(int n){num=n}//显式构造函数private:int num}int main(){test1 T1=12//隐式调用其构造函数,成功的test2 T2=12//编译错误,无法隐式调用其构造函数Test2 T3(12)//调用成功。Return 0}test1的构造函数接受int参数。代码的第19行将被隐式转换为调用test1的构造函数。test2的构造函数声明为显式的,这意味着不能通过隐式转换调用构造函数,因此第20行将出现编译错误。可以隐式调用普通构造函数。显式构造函数只能由display调用。

VB中通用声明Option Explicit是什么意思啊?有什么作用?

Option explicit通常放在程序和子例程的顶部,告诉VB的解释器或编译器:“在使用它之前,所有变量都需要定义。使用optionexplicit可以避免拼写错误、类型错误和结果错误。使用optionexplicit可以加快程序的运行速度。因为它节省了动态分配可变存储空间的时间和操作寻址时间。没有预先定义的变量是“variant”变量,它可以存储各种类型的变量,是最慢的变量类型。使用option explicit,您将预先声明它们的类型,而不是变量。

为什么复制构造函数不添加explicit前缀?

关键字explicit可以阻止“单参数构造函数”用于自动类型转换(隐式类型转换)

class test{

private:

int data

public:

test(int data=0){}

test(const test&RHS){}]}

不带显式,测试s=4可以编译并通过

但是对于显式,测试(4)不是必需的

那么复制构造函数的定义是什么?也就是说,构造函数的参数属于这种类型。只要此类型的对象用于初始化同一类型的其他对象,将调用复制构造函数。

例如:

test a=4//将不在此处调用复制构造函数

test B=a//将在此处调用复制构造函数

因此复制构造函数中没有隐式类型转换问题,因此不需要显式

explicit关键字 explicit可以被子类继承 C语言explicit

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。