避免C++隐式类型转换
2009-03-16 17:17
232 查看
避免C++隐式类型转换
比如下面的程序,执行 myInt.copy(17); 时,由于找不到匹配的函数,但是有 int 至 MyIntClass 的构造函数,
C++的编译器会进行隐式类型转换,即产生一个临时 MyIntClass 对象,效果如同
MyIntClass *temp = new MyIntClass(17);
myInt.copy(temp);
delete temp;
这样效率不是很好,解决办法是重定义一个支持 int 参数的 copy 成员函数 MyIntClass::copy(int d)
#include <iostream>
using namespace std;
class MyIntClass
{
public:
MyIntClass(int value) :
data(value)
{
}
void copy(const MyIntClass &other)
{
if (this != &other)
{
this->data = other.data;
}
}
int getdata()
{
return data;
}
void setdata(int d)
{
data = d;
}
private:
int data;
};
int main()
{
class MyIntClass myInt(0);
myInt.copy(17);
cout<<myInt.getdata()<<endl;
return 0;
}
比如下面的程序,执行 myInt.copy(17); 时,由于找不到匹配的函数,但是有 int 至 MyIntClass 的构造函数,
C++的编译器会进行隐式类型转换,即产生一个临时 MyIntClass 对象,效果如同
MyIntClass *temp = new MyIntClass(17);
myInt.copy(temp);
delete temp;
这样效率不是很好,解决办法是重定义一个支持 int 参数的 copy 成员函数 MyIntClass::copy(int d)
#include <iostream>
using namespace std;
class MyIntClass
{
public:
MyIntClass(int value) :
data(value)
{
}
void copy(const MyIntClass &other)
{
if (this != &other)
{
this->data = other.data;
}
}
int getdata()
{
return data;
}
void setdata(int d)
{
data = d;
}
private:
int data;
};
int main()
{
class MyIntClass myInt(0);
myInt.copy(17);
cout<<myInt.getdata()<<endl;
return 0;
}
相关文章推荐
- More Effective C++ 条款21 利用重载技术避免隐式类型转换
- More Effective C++ 阅读笔记(四)-- 避免使用隐式类型转换
- More Effective C++ (条款21:利用重载技术避免隐式类型转换)
- More Effective C++----(21)通过重载避免隐式类型转换
- c++设计中可以利用重载避免隐式类型转换
- 利用重载避免隐式类型转换(More Effective C++_21(效率))
- C++的类类型隐式转换与explicit关键字
- C++隐式的类类型转换和类型转换运算符
- C++隐式类类型转换
- C/C++中的隐式类型转换
- C++隐式类类型转换(转)
- C++中的类型转换之隐式与显示转换
- C++隐式类型转换
- C++:显式和隐式初始化、显式和隐式类型转换
- c++隐式类型转换
- 从一道面试题看C++隐式类型转换
- 从一道面试题看C++隐式类型转换
- c++隐式类型转换示例分享
- C++隐式类型转换