C++中的explicit constructor

简单地讲,explicit constructor就是禁止隐式的类型转换,比如下面的代码:

1 #include <iostream> 2  using std::cout; 3 using std::endl; 4 class complexNumbers { 5   double real, img; 6 public: 7   complexNumbers() : real(0), img(0) { } 8   complexNumbers(const complexNumbers& c) { real = c.real; img = c.img; } 9   explicit complexNumbers( double r, double i = 0.0) { real = r; img = i; }10   friend void display(complexNumbers cx);11 };12 void display(complexNumbers cx){13   cout<<"Real Part: "<<cx.real<<" Imag Part: "<<cx.img<<endl;14 }15 int main() {16   complexNumbers one(1);17   display(one);18   complexNumbers two = 2;  //错误!必须显示地进行类型转换19   display(200);            //error: conversion from ‘int’ to non-scalar type ‘complexNumbers’ requested20   return 0;21 }

原文地址:Explicit Constructor in C++
原文链接: https://www.cnblogs.com/edwardlost/archive/2010/11/09/1872862.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/17134

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月7日 下午5:39
下一篇 2023年2月7日 下午5:40

相关推荐