[Home]  [Edit this page]  [Recent Changes]  [Special Pages]  [Help
cppoverloaddivideequals

(C++) Overloading the divide-equals operator

Here an example with only the divide-equals operator overloaded. After it, I give the same example with more operators overloaded.

  1. include <iostream>
  2. include <vector>
class TimePoint { public: TimePoint() { reset(); } double mean; double stdDev; void reset() { mean = 0; stdDev = 0; } void operator/=(const double& value) { mean/=value; stdDev/=value; } }; TimePoint getAverage(const std::vector<TimePoint>& timePoints) { TimePoint result; const int nTimePoints = timePoints.size(); for (int i=0; i<nTimePoints; ++i) { result.mean+=timePoints[i].mean; result.stdDev+=timePoints[i].stdDev; } result/=static_cast<double>(nTimePoints); return result; } int main() { const int nTimePoints = 10; std::vector<TimePoint> timePoints(nTimePoints); for (int i=0; i<nTimePoints; ++i) { timePoints[i].mean = static_cast<double>(i); timePoints[i].stdDev = 1.0; } const TimePoint averageTimePoint = getAverage(timePoints); std::cout << "averageTimePoint.mean: " << averageTimePoint.mean << std::endl;; std::cout << "averageTimePoint.stdDev: " << averageTimePoint.stdDev << std::endl; return 0; }


More operators overloaded:
  1. include <iostream>
  2. include <vector>
class TimePoint { public: TimePoint() { reset(); } double mean; double stdDev; void reset() { mean = 0; stdDev = 0; } void operator/=(const double& value) { mean/=value; stdDev/=value; } void operator+=(const TimePoint& timePoint) { mean+=timePoint.mean; stdDev+=timePoint.stdDev; } friend std::ostream& operator<<( std::ostream& os, const TimePoint& timePoint) { os << "timePoint.mean: " << timePoint.mean << '\t' << "timePoint.stdDev: " << timePoint.stdDev; return os; } }; TimePoint getAverage(const std::vector<TimePoint>& timePoints) { TimePoint result; const int nTimePoints = timePoints.size(); for (int i=0; i<nTimePoints; ++i) { result+=timePoints[i]; } result/=static_cast<double>(nTimePoints); return result; } int main() { const int nTimePoints = 10; std::vector<TimePoint> timePoints(nTimePoints); for (int i=0; i<nTimePoints; ++i) { timePoints[i].mean = static_cast<double>(i); timePoints[i].stdDev = 1.0; } const TimePoint averageTimePoint = getAverage(timePoints); std::cout << averageTimePoint << std::endl; return 0; }


last edited (November 15, 2006) by bilderbikkel, Number of views: 1382, Current Rev: 6 (Diff)

[Edit this page]  [Page history]  [What links here]  [Discuss this topic]  [Printer Friendly]  

Members

Username:

Password:


Register
Forgot Password?




Programmers Heaven - for .NET, Java, C/C++ and WEB Developers!
© 1996-2008 Community Networks Ltd. All rights reserved. Reproduction in whole or in part, in any form or medium without express written permission is prohibited. Violators of this policy may be subject to legal action. Please read Terms Of Use and Privacy Statement for more information. Development by Tore Nestenius at .NET Consultant - Synchron Data.