看书看到了explicit关键字,就来做个笔记,讲得比较明白,比较浅. 在C++中,我们有时可以将构造函数用作自动类型转换函数.但这种自动特性并非总是合乎要求的,有时会导致意外的类型转换,因此,C++新增了关键字explicit,用于关闭这种自动特性.即被explicit关键字修饰的类构造函数,不能进行自动地隐式类型转换,只能显式地进行类型转换. 注意:只有一个参数的构造函数,或者构造函数有n个参数,但有n-1个参数提供了默认值,这样的情况才能进行类型转换. 下面通过一段代码演示具体应用(无ex…
在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换. explicit使用注意事项: *     explicit 关键字只能用于类内部的构造函数声明上. *     explicit 关键字作用于单个参数的构造函数. *     在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换. 在C++中,如果一个类有只有一个参数的构造函数,C++允许一种特殊的声明类变…
我们先看一段代码:    建立people.cpp 文件,然后输入下列内容:class People{    public:      int age;     explicit People (int a)//加上了explict关键字的构造函数    {      age=a;     }};void foo ( void ){     People p1(10); //方式一     People p3=10; //方式二 } 在 C++ 中, 如果一个类有只有一个参数的构造函数,C++…
问题描述:对于单参数的构造函数C++允许隐含的类型转换,容易破坏代码可读性,并导致难以发现的错误,通过关键字explicit修饰构造函数可以禁止单参数构造函数创建隐式临时变量.…
按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示: class String { String ( const char* p ); // 用C风格的字符串p作为初始化值 //… } String s1 = “hello”; //OK 隐式转换,等价于String s1 = String(“hello”);   但是有的时候可能会不需要这种隐式转换,如下: class String {        String ( int n…
一.构造函数.默认构造函数 (1).构造函数 构造函数是特殊的成员函数 创建类类型的新对象,系统自动会调用构造函数 构造函数是为了保证对象的每个数据成员都被正确初始化 函数名和类名完全相同 不能定义构造函数的类型(返回类型),也不能使用void 通常情况下构造函数应声明为公有函数,一般被隐式地调用. 构造函数被声明为私有有特殊的用途,比如单例模式,以后详谈. 构造函数可以有任意类型和任意个数的参数,一个类可以有多个构造函数(重载) (2).默认构造函数 不带参数的构造函数 如果程序中未声明,则系…
原文地址:https://blog.csdn.net/shine_journey/article/details/53081523 1.在C++编码过程中,类的创建十分频繁. 简单的功能,当然不用考虑太多,但是从进一步深刻理解C++的内涵,类的结构和用法,编写更好的代码的角度去考虑,我们就需要用到标题所提到的这些内容. 2.先上代码 // testSingleMode.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <io…
一.构造函数.默认构造函数 (1).构造函数 构造函数是特殊的成员函数 创建类类型的新对象,系统自动会调用构造函数 构造函数是为了保证对象的每个数据成员都被正确初始化 函数名和类名完全相同 不能定义构造函数的类型(返回类型),也不能使用void 通常情况下构造函数应声明为公有函数,一般被隐式地调用. 构造函数被声明为私有有特殊的用途,比如单例模式,以后详谈. 构造函数可以有任意类型和任意个数的参数,一个类可以有多个构造函数(重载) (2).默认构造函数 不带参数的构造函数 如果程序中未声明,则系…
本文系转载,原文链接:http://www.cnblogs.com/ymy124/p/3632634.html 首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式). 那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子: class CxString  // 没有使用explicit关键字的…
C++编程语言中有很多比较重要的关键字在实际编程中起着非常重要的作用.我们今天为大家介绍的C++ explicit关键字就是其中一个应用比较频繁的关键字.下面就让我们一起来看看这方面的知识吧. C++ explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢? 如果c++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象,如下面…