C++ class重载强制转换
时间: 2023-10-21 08:25:01 浏览: 163
C++ 中的强制类型转换
C++中的类可以重载强制类型转换运算符。在C++中,类型的名字本身也被视为一种运算符,即类型强制转换运算符。类型强制转换运算符是单目运算符,只能被重载为类的成员函数,不能被重载为全局函数。通过适当重载类型强制转换运算符,可以实现对对象进行强制类型转换。
例如,在下面的示例中,Complex类重载了强制类型转换运算符double():
```cpp
class Complex {
double real, imag;
public:
Complex(double r = 0, double i = 0) :real(r), imag(i) {};
operator double() { return real; } // 重载强制类型转换运算符
};
```
在上述示例中,(double)c将Complex对象c转换为double类型,并输出1.2。这相当于调用c.operator double()。
另外,n = 2 * c将Complex对象c转换为double类型,并将结果赋值给变量n。这相当于调用c.operator double()。输出结果为3.2。
因此,上述示例中的C++类Complex重载了强制类型转换运算符并实现了对象到double类型的转换。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [C++重载()(强制类型转换运算符)](https://blog.csdn.net/qq_40996392/article/details/107872453)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [C++ 重载强制类型转换运算符](https://blog.csdn.net/weixin_45743799/article/details/104892866)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [超详细Java入门到精通自学视频课程-08、继承:概述、案例.rar](https://download.csdn.net/download/weixin_54787054/88280693)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
阅读全文