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’ requested
20 return 0 ;
21 }

 

原文地址:Explicit Constructor in C++

转载于:https://www.cnblogs.com/edwardlost/archive/2010/11/09/1872862.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值