美文网首页C++学习笔记后台开发
C++中类类型的隐式转换

C++中类类型的隐式转换

作者: 浩浩浩DICE | 来源:发表于2014-05-27 16:37 被阅读303次

C++中类类型的隐式转换示例
<pre>#include <iostream>
class A{
public:
A() :a(0){} //默认构造函数
A(int i) :a(i){} //自定义构造函数
void print(){ std::cout << a << std::endl; }
private:
int a;
};

int main(){
A b = true; //隐式转换并执行拷贝初始化,布尔值转换为类类型A的一个实例,调用了自定义构造函数
b.print();
return 0;
}</pre>注:C++中类类型的隐式转换只支持一步转换,以上代码只执行了一次转换,即将布尔值转换为int值带入自定义构造函数。

如下面的示例所示

<pre>#include <iostream>

include <string>

class A{
public:
A() :str(0){} //默认构造函数
A(std::string s) :str(s){} //自定义构造函数
void print(){ std::cout << str << std::endl; }
A& add(const A &a){ str += a.str; return *this; }
private:
std::string str;
};

int main(){
A b = "hello"; //隐式转换
b.add(" world"); //错误,执行了两次转换,应改为b.add(std::string(" world"))
b.print(); //输出 hello world
return 0;
}</pre>

下面的示例展现了一个有趣的现象

<pre>#include <iostream>
class A{
public:
A() :a(0){} //默认构造函数
//A(int i) :a(i){}
void print(){ std::cout << a << std::endl; }
A& operator=(int i){ a = i; return *this; } //拷贝赋值函数
private:
int a;
};

int main(){
A b = 2; //失败,不存在适当的构造函数进行隐式转换
A c; //调用默认构造函数
c = 2; //成功,存在匹配的拷贝赋值函数
c.print();
return 0;
}</pre>

相关文章

  • C++中类类型的隐式转换

    C++中类类型的隐式转换示例 #include class A{public:A() :a(0){} //默认构...

  • C++隐式类类型转换及explicit关键字的使用

    1. 隐式类型转换 C/C++中基本类型的自动类型转换是经常见到的情形, 例如下边的代码: 其实,这就是一种隐式类...

  • static_cast, dynamic_cast,const_

    1 转换类型 c++中的转换类型分为隐式转换和显示转换。 2 隐式转换 又称为标准转换,包括以下几种情况:1)算数...

  • 数据类型转换

    写在前面 C/C++编程中常见数据类型转换,包括隐式类型转换和显式类型转换。 1. 隐式类型转换 隐式类型转换在以...

  • C++类型转换

    C++的类型转换分为隐式转换和显式转换 隐式转换举例: int i=4; double d=i;//隐式转换 显式...

  • C++ 中static_cast、dynamic_cast、co

    C++中的类型转换分为两种:隐式类型转换;显式类型转换。 而对于隐式变换,在很多时候,不经意间就发生了,比如int...

  • C++语言基础(1):类型转换

    相关章节 「C++类的特殊成员函数(1):构造函数」中“3 隐式类类型转换” 考虑下面的例子: 在计算ival的值...

  • C++<第三十三篇>:四种类型转换

    在 C++ 中,不同数据类型之间可以相互转换。无需用户指明如何转换的称为自动类型转换(隐式类型转换),需要用户显式...

  • JavaSE之隐式转换、强制转换

    课前小例 转换类型:隐式转换(自动类型转换)、强制类型转换 隐式转换:两种类型彼此兼容,范围小的类型转成范围大的类...

  • C++类型转换

    隐式类型转换: C++的隐式转换发生在以下四种情况: 在混合类型的算术表达式中。 在表达式赋值中。 表达式传给函数...

网友评论

    本文标题:C++中类类型的隐式转换

    本文链接:https://www.haomeiwen.com/subject/gvedtttx.html