简单地讲,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
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!