C#重载的一个简单的问题

问题描述

usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespace重载{classComplex{doubler,v;publicComplex(doublem,doublen){r=m;v=n;}publicstaticComplexoperator+(Complexa,Complexb){returnnewComplex(a.r+b.r,a.v+b.v);}publicstaticComplexoperator++(Complexa){doubler=a.r+1;doublev=a.v+1;returnnewComplex(r,v);}publicvoidPrint(){Console.WriteLine(r+"+"+v+"i");}}classProgram{staticvoidMain(string[]args){Complexa=newComplex(3,4);Complexb=newComplex(5,6);Complexc=a+b;c.Print();Complexe=a++;e.Print();stringa1;a1=Console.ReadLine();}}}结果是8+10i3+4i第一个我明白可是3+4i我就不懂了明明应该是4+5i我用断点跟踪时也看到r=4,v=5的急死了请大虾赐教!

解决方案

解决方案二:
呵呵LZ运算符的优先级没有搞清楚。赋值运算符=的优先级比++高。Complexe=a++;这一句是先把a的值赋给e,然后再累加。
解决方案三:
你把++放前面试试。
解决方案四:
a++;是先使用后加,改为++a
解决方案五:
楼主,您的doubler,v;...和publicstaticComplexoperator++(Complexa){doubler=a.r+1;doublev=a.v+1;returnnewComplex(r,v);}是一样的r,v么,应该不是!您在这个方法里重新定义了,在内存分配中,就是分配在栈内,把上面的doubler,v;给隐藏了.所以当然是那个结果.您可以把方法里的double去掉.试试看.随便乱说说,希望能起到抛砖引玉的效果.谢谢
解决方案六:
最清晰的思路publicstaticComplexoperator++(Complexa){this.r=a.r+1;this.v=a.v+1;returnnewComplex(r,v);}其他都可以不边,把double变this,或者把double删除掉也OK.

时间: 2024-12-23 10:06:45

C#重载的一个简单的问题的相关文章

关于C++加法运算符重载的一个超简单问题

问题描述 关于C++加法运算符重载的一个超简单问题 以下代码: #include using namespace std; class num { public: num(){n=1;cout<<"构造函数执行 ";} num(int i){n=i;cout<<"带一个参数的构造函数执行 ";} num(const num&s){this->n=s.n;cout<<"复制构造函数执行 ";} ~n

一个简单的输入运算符重载

问题描述 一个简单的输入运算符重载 #include#includeusing namespace std;class complex{private: int real; int imag;public: complex(int r=0int i=0) :real(i)imag(i){} ~complex(){} complex operator +(complex&x) { real=real+x.real; imag=imag+x.real; return *this; } complex

一个简单的链表模版类的实现

这是翻阅<数据结构.算法与应用--C++语言描述> 以及在网上得到的一些资料后写出来的.起因是在项目中要用到一个链表,但我做一个简单的链表在C++中用的时候跟C差别很多,比如赋值运算(编译器说要做操作符重载,或者考贝构造函数,C++中把结构当成一个类来看了,详见相关介绍的文档或书籍).后来一想干脆做个template顺便学习一下,一举两得. 几个问题: CListData和CNode的函数均为内联函数(inline),因为目前的编译器仍不支持分离编译.按<Thinking in C++&

c#-c++写的一个简单学生信息管理系统,求助。

问题描述 c++写的一个简单学生信息管理系统,求助. 编译不报错,就是运行不出来 #include<iostream.h> #include<stdio.h> #include<string.h> class student//定义学生信息类 {public: char name[20]; char num[10]; char banji[20]; int math,english,chinese,computer; int sum; double ave; void

vc++-谁能帮我解决一个简单程序

问题描述 谁能帮我解决一个简单程序 1.多个类的继承关系画出结构图(五个以上类) 2.定义五个以上类 ,每个类写出类的定义(2个文件) 3.使用静态数据成员和静态成员函数 4.要求有基类和派生类的构造函数 和至少一个析构函数)5运算符重载 成员函数或友元函数 6.实现多重继承和虚基类 7.使用抽象类,实现多态性 8.主函数 解决方案 这个比较简单吧,你去找本C++的书籍都会有例子的,你着急吗, 我最近有点忙,不然可以给你写. 解决方案二: 作业要自己完成,这都是Java基本概念得理解,

《精通 ASP.NET MVC 5》----2.4 创建一个简单的数据录入应用程序

2.4 创建一个简单的数据录入应用程序 本章的其余部分将通过建立一个简单的数据录入应用程序来考查MVC的更多基本特性.本小节打算分步进行,目的是演示MVC的运用,因此会跳过对幕后工作原理的一些解释.但不必担心,在后面的章节中会重新深入地讨论这些论题. 2.4.1 设置场景 假设一个朋友决定举行一个"新年除夕晚会",于是她请笔者为其创建一个Web应用程序,以便让受邀人进行电子回复(RSVP).她的要求有以下4个关键特性. 一个显示此晚会信息的首页. 一个可以用来进行电子回复(RSVP)的

c#-求大神来帮助C#,一个简单学生类

问题描述 求大神来帮助C#,一个简单学生类 定义枚举类型 Public enum SexType {男, 女, 未知}: Public enum ProTitle (助教,讲师,副教授.教授.未知) Public enum StuTitle {班长,副班长,学委,学员} 定义下面类 Person类(抽象类) 包含的字段:姓名Name(字符串型).身高Height(单精度型,单位:米).体重Weight(单精度,单位:kg).性别Sex(枚举类型SexType) 包含的属性:身份证号ID(字符串型

《精通 ASP.NET MVC 4》----2.4 创建一个简单的数据录入应用程序

2.4 创建一个简单的数据录入应用程序 精通 ASP.NET MVC 4 本章的其余部分将通过建立一个简单的数据录入应用程序,来考察MVC的更多基本特性.本节将分步进行,目的是演示MVC的运转,因此会跳过对幕后工作原理的一些解释.不用担心--在后面的章节中还会重新深入地讨论这些论题. 2.4.1 设置场景 设想一个朋友要主办一个"新年除夕晚会",需要创建一个Web网站,以便让被邀请人进行RSVP(电子回复).这个网站需要以下四个关键特性: 一个显示此晚会信息的主页: 一个可以用来进行R

Android apps浅析01-Amazed:一个简单但令人上瘾的加速度为基础的大理石指导游戏。

Android apps浅析01-Amazed:一个简单但令人上瘾的加速度为基础的大理石指导游戏.   这个例子中只有4个类,一个绘制大理石类Marble,一个绘制迷宫类Maze,一个Amazed视图类,一个Amazed活动类   1. 绘制大理石类Marble通过Canvas和Paint绘制,同时提供移动x轴和y轴坐标的方法,每个大理石都有一个状态值:活的/死的 /* * Copyright (C) 2008 Jason Tomlinson. * * Licensed under the Ap