C++不同类型转换--2

简介: C++不同类型转换--2

C++不同类型转换--1https://developer.aliyun.com/article/1424634

explicit关键字:



       explicit关键字可以防止自定义类型中构造函数的隐式类型转换。因为自定义类型的隐式转换发生在构造函数中,所以只需用 explicit 修饰构造函数防止这种转换。


class Date
{
public:
    explicit Date(int year = 2023, int month = 10, int day = 16)
        : _year(year)
        , _month(month)
        , _day(day)
    {    }
private:
    int _year;
    int _month;
    int _day;
};
int main()
{
    //有了关键字explicit,下面的转换都不能实现
    //Date d1 = 5;
    //Date d2 = { 1,2,3 };
    //Date d3 = (1, 2, 3);
    Date d1(5);//类似于此种的方式没有设计隐式类型的转换,可以使用
    return 0;
}


强制类型转换:


       强制类型转换的效果比较强,explicit关键字限制不了强制类型转换。这里要说明的是强制类型转换必须跟一个表达式,因此,强制类型转换只能完成一个参数的转换。


#include <iostream>
using namespace std;
class Date
{
public:
  explicit Date(int year = 2023, int month = 10, int day = 16)
  : _year(year)
  , _month(month)
  , _day(day)
  { }
  void Print() {
  cout << _year << "/" << _month << "/" << _day << endl;
  }
private:
  int _year;
  int _month;
相关文章
|
3天前
|
设计模式 安全 算法
【C/C++ 类型转换 】深入理解C++向上转型:从基础到应用
【C/C++ 类型转换 】深入理解C++向上转型:从基础到应用
47 0
|
3天前
|
安全 编译器 程序员
特殊类设计以及C++中的类型转换
特殊类设计以及C++中的类型转换
30 2
|
3天前
|
安全 编译器 C++
【C/C++ 类型转换规则】一文了解C/C++ 中的类型转换规则,帮助你更好的编程
【C/C++ 类型转换规则】一文了解C/C++ 中的类型转换规则,帮助你更好的编程
23 0
|
3天前
|
存储 安全 编译器
C++:现代类型转换
C++:现代类型转换
24 5
|
3天前
|
编译器 C++
【C++】类与对象(static、explicit、友元、隐式类型转换、内部类、匿名对象)
【C++】类与对象(static、explicit、友元、隐式类型转换、内部类、匿名对象)
9 2
|
3天前
|
存储 编译器 C语言
【C++】C++中规范[ 类型转换标准 ] 的四种形式
【C++】C++中规范[ 类型转换标准 ] 的四种形式
|
3天前
|
安全 程序员 编译器
【C++类和对象】初始化列表与隐式类型转换
【C++类和对象】初始化列表与隐式类型转换
|
3天前
|
安全 编译器 C语言
【C++高阶(九)】C++类型转换以及IO流
【C++高阶(九)】C++类型转换以及IO流
|
3天前
|
算法 安全 编译器
【C++运算符重载】深入理解C++中的类型转换与重载
【C++运算符重载】深入理解C++中的类型转换与重载
33 0
|
3天前
|
算法 Linux 编译器
【C++ 泛型编程 进阶篇】 C++ 模版元编程 类型转换 std::decay 全面教程
【C++ 泛型编程 进阶篇】 C++ 模版元编程 类型转换 std::decay 全面教程
49 0