- 浏览: 456226 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (538)
- C/C++ Primer (69)
- Objective-C Primer (102)
- Python Primer (19)
- JavaScript Primer (1)
- Java Primer (37)
- PHP Primer (17)
- 泛 Linux (37)
- Shell Script (21)
- APUE (21)
- UNP__1&2 (19)
- NetWork (7)
- Oracle周边 (38)
- Mysql里边 (6)
- Windows技 (9)
- 简单算法 & 数据结构 (14)
- 设计模式 (6)
- GTK历程 (12)
- 工具使用 (25)
- 杂事 (23)
- 一些概念 (17)
- Web方面 (10)
- myCodeTools (9)
- ^未 竟$ (13)
- 硬件通信 (2)
- Games (1)
最新评论
copy:http://www.azure.com.cn/article.asp?id=335
c++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢?
如果c++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象,如下面所示:
在上面的代码中编译器自动将整型转换为MyClass类对象,实际上等同于下面的操作:
class MyClass
{
public:
MyClass( int num );
}
....
MyClass obj = 10; //ok,convert int to MyClass
上面的所有的操作即是所谓的"隐式转换"。MyClass temp(10);
MyClass obj = temp;
如果要避免这种自动转换的功能,我们该怎么做呢?嘿嘿这就是关键字explicit的作用了,将类的构造函数声明为"显示",也就是在声明构造函数的时候前面添加上explicit即可,这样就可以防止这种自动的转换操作,如果我们修改上面的MyClass类的构造函数为显示的,那么下面的代码就不能够编译通过了,如下所示:
class MyClass
{
public:
explicit MyClass( int num );
}
....
MyClass obj = 10; //err,can't non-explict convert
发表评论
-
float equal
2013-05-23 18:21 810- (BOOL)floatA:(float)f1 equalB ... -
C++序列化
2012-07-12 09:51 580http://hi.baidu.com/ewook/item/ ... -
C++著名内裤
2011-12-02 14:00 8031、C++各大有名库的介绍 ... -
C++写C
2011-09-06 17:23 617在C++中写C,标准头文件写法 #ifndef __AB ... -
errno.h
2011-05-05 14:27 679#define EPERM 1 ... -
__cplusplus
2011-04-21 15:09 732http://www.cnblogs.com/stonecra ... -
Pthread__常用
2011-04-21 11:46 844http://blogold.chinaunix.net/u/ ... -
常用预编译
2011-04-21 10:32 643#if defined(WIN32) || defined ... -
C++__容器
2011-04-18 10:16 549http://apps.hi.baidu.com/share/ ... -
C++模板
2011-03-29 14:27 619内容主要来至《钱能C++程序设计教程》&《C++ Pr ... -
交叉引用、前置声明
2011-03-02 09:40 798有两个类相互引用了,编译器报错。 原因是两个类交叉引用: A ... -
typedef的四个用途和两个陷阱
2010-12-14 12:34 642http://hi.baidu.com/changfeng01 ... -
第五届开源小组招新题目
2010-12-03 21:56 738这是学校的开源小组招新题。 08年时我是第二届的组长,不知不觉 ... -
string const char*
2010-12-02 16:13 763http://topic.csdn.net/u/2008092 ... -
CPP Container
2010-11-10 09:20 697延后整理。。。 -
C语言运算符优先级
2010-11-02 17:45 782优先级 运算符 ... -
point point
2010-11-02 17:23 613http://learn.akae.cn/media/ch23 ... -
位运算
2010-11-01 11:33 777千百年来,位运算始终没出现在我写的代码里,今天终于出现了。 ... -
Unix环境下操作特大文件
2010-11-01 11:03 607http://hi.baidu.com/jiangfeng11 ... -
GCC在C语言中内嵌汇编
2010-10-22 14:48 1361http://hi.baidu.com/liu_bin0101 ...
相关推荐
在C++程序中很少有人去使用explicit关键字,不可否认,在平时的实践中确实很少能用的上。再说C++的功能强大,往往一个问题可以利用好几种C++特性去解决。但稍微留心一下会发现现有的MFC库或者C++标准库中的相关类...
在C++中,关键字是预定义的保留词汇,它们具有特殊含义,不能用作变量、函数或其他标识符的名字。了解并掌握C++的关键字对于任何初学者来说都至关重要,因为这些关键字构成了语言的基础框架,直接影响到代码的编写和...
在C++编程语言中,`explicit`关键字是一个非常重要的特性,它主要用于控制类的构造函数如何参与类型转换。本文将详细解析`explicit`关键字的用途、意义以及它如何影响类对象的创建和赋值。 `explicit`关键字用于...
在C++程序中很少有人去使用explicit关键字,不可否认,在平时的实践中确实很少能用的上。再说C++的功能强大,往往一个问题可以利用好几种C++特性去解决。但稍微留心一下就会发现现有的MFC库或者C++标准库中的相关类...
我们今天为大家介绍的C++ explicit关键字就是其中一个应用比较频繁的关键字。下面就让我们一起来看看这方面的知识吧。 C++ explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有”显式”那么必然就...
在C++编程语言中,`explicit`关键字是一个非常重要的修饰符,它用于构造函数,用于控制类型转换的行为。本文将深入探讨`explicit`关键字的作用、使用场景以及它如何帮助避免潜在的错误。 首先,让我们来看一下`...
在C++编程语言中,`explicit`关键字是一个非常重要的特性,它主要用于控制构造函数的隐式类型转换。本文将深入探讨`explicit`的作用,并通过示例代码帮助理解其工作原理。 `explicit`关键字用于声明单参数构造函数...
### C++66个关键字的中文含义详解 #### asm(汇编) - **用途**:允许在C++程序中嵌入汇编代码。 - **语法**:`asm(指令字符串);` - **示例**:如果需要直接控制硬件或者优化性能,可以在C++中插入汇编代码。 ```...
C++ explicit关键字在刚学的时候就接触到了,也从各处了解了一些,但始终云里雾里,在闲来无事的时候再仔细研究了一下,自己消化理解了一下,自认为比其他网友总结的精简而不失准确。
在C++编程语言中,关键字是具有特殊含义的保留词汇,它们构成了语言的基本构建块。以下是对给定标题和描述中提及的一些C++关键字的详细解释: 1. `asm`: `asm`关键字允许程序员在C++代码中直接插入汇编语言指令。这...
C++是一种强类型、面向对象的编程语言,它的语法丰富,包含了许多关键字,这些关键字在程序中具有特殊的含义。以下是对标题和描述中提及的一些C++关键字的详细解释: 1. `asm`:这个关键字允许程序员在C++程序中...
- 更多C++关键字包括`explicit`、`friend`、`mutable`、`new`、`operator`、`private`、`protected`、`public`、`reinterpret_cast`、`return`、`static_cast`、`template`、`this`、`throw`、`try`、`typeid`、`...
C++关键字大全(67个) asm auto bad_cast bad_typeid bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum except explicit extern false finally float ...
在C++编程语言中,`explicit`关键字是一个重要的特性,用于控制类的构造函数的隐式类型转换。这个关键字主要用于防止编译器自动执行单参数构造函数的隐式转换,从而减少潜在的错误和混淆。下面我们将深入探讨`...
接下来,explicit关键字用于单参数构造函数,防止隐式类型转换。默认情况下,C++允许通过单参数构造函数将一个类型隐式转换为另一个类型,这可能导致意外的类型转换。例如: ```cpp class MyInt { public: ...
C语言和C++是两种广泛使用的编程语言,它们的关键字是语言的核心组成部分,用来定义变量、控制流程、声明数据类型等。以下是对C语言32个关键字和C++63个关键字的详细解释: 1. **auto**:C++中的`auto`用于自动推断...
C++ 关键字大全 C++ 作为一门高效、灵活的编程语言,具有丰富的关键字集合,了解这些关键字的作用和用法是每个 C++ 开发者的必备技能。下面,我们将对 C++ 的关键字进行分类和解释,从基本数据类型到控制流语句,从...