请选择 进入手机版 | 继续访问电脑版

C++编程

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: 000

000山寨的笔记

[复制链接]

6

主题

62

帖子

206

积分

初软

Rank: 3Rank: 3

积分
206
 楼主| 发表于 2017-4-22 13:56:23 | 显示全部楼层
感觉忘了点啥,对的,类型转换函数
这个函数只能以类的成员函数的形式出现,需要用到的时候直接进行等号赋值即可
例:
  1. #include<iostream>
  2. using namespace std;
  3. class Complex
  4. {
  5. public:
  6.         Complex(const Complex&);
  7.         Complex(int, double);
  8.         operator double() const { return b; }

  9. private:
  10.         int m_a;
  11.         float b;
  12. };
  13. Complex::Complex(int i = 0, double j = 0) :m_a(i), b(j)
  14. {

  15. }
  16. Complex::Complex(const Complex &a)
  17. {
  18.         this->m_a = a.m_a;
  19.         cout << "Copy" << endl;
  20. }
  21. int main()
  22. {
  23.         Complex a(1, 7.64);
  24.         double b = a;
  25.         cout << b;
  26.         return 0;
  27. }
复制代码

在默认的情况下,这个类型转换会将第一个成员变量通过基础类型转换来进行复制(如果第一个参数类型无法通过基础的类型转换的话则会提示出错)
回复 支持 反对

使用道具 举报

6

主题

62

帖子

206

积分

初软

Rank: 3Rank: 3

积分
206
 楼主| 发表于 2017-4-22 14:45:53 | 显示全部楼层
000 发表于 2017-4-21 22:51
既然说到了运算符重载的话,那么来谈谈为啥必须以成员函数重载 = -> [] ()这四个符号
首先我们知道用了 =  ...

这里有一个二义性的隐患
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|C++编程  

GMT+8, 2019-8-19 07:17 , Processed in 0.078125 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表