Dbl.cpp
上传用户:sz0451
上传日期:2022-07-29
资源大小:256k
文件大小:3k
源码类别:

.net编程

开发平台:

Visual C++

  1. // This is the main project file for VC++ application project 
  2. // generated using an Application Wizard.
  3. #include "stdafx.h"
  4. #using <mscorlib.dll>
  5. #include <tchar.h>
  6. using namespace System;
  7. __value struct Dbl
  8. {
  9. public:
  10. double val;
  11. Dbl(double v) { val = v; }
  12. double getVal() { return val; }
  13. // Arithmetic operators
  14. static Dbl op_Addition(Dbl lhs, Dbl rhs)
  15. {
  16. Console::WriteLine("op_Addition(Dbl,Dbl)");
  17. Dbl result(lhs.val + rhs.val);
  18. return result;
  19. }
  20. static Dbl op_Subtraction(Dbl lhs, Dbl rhs)
  21. {
  22. Dbl result(lhs.val - rhs.val);
  23. return result;
  24. }
  25. static Dbl op_Multiply(Dbl lhs, Dbl rhs)
  26. {
  27. Dbl result(lhs.val * rhs.val);
  28. return result;
  29. }
  30. static Dbl op_Division(Dbl lhs, Dbl rhs)
  31. {
  32. Dbl result(lhs.val * rhs.val);
  33. return result;
  34. }
  35. // Logical and equality
  36. static bool op_Equality(Dbl lhs, Dbl rhs)
  37. {
  38. Console::WriteLine("op_Equality");
  39. return lhs.val == rhs.val;
  40. }
  41. static bool op_Inequality(Dbl lhs, Dbl rhs)
  42. {
  43. Console::WriteLine("op_Inequality");
  44. return !(lhs == rhs);
  45. }
  46. // Increment and decrement
  47. static Dbl op_Increment(Dbl d)
  48. {
  49. Console::WriteLine("op_Increment");
  50. d.val += 1;
  51. return d;
  52. }
  53. bool Equals(Object* pOther)
  54. {
  55. Dbl* s = dynamic_cast<Dbl*>(pOther);
  56. if (s == 0) return false;
  57. return s->val == val;
  58. }
  59. };
  60. Dbl Incr(Dbl d) {
  61. d.val += 1;
  62. return d;
  63. }
  64. // This is the entry point for this application
  65. int _tmain(void)
  66. {
  67.     // TODO: Please replace the sample code below with your own.
  68.     Console::WriteLine(S"Dbl Example");
  69. Dbl d1(10.0);
  70. Dbl d2(20.0);
  71. Dbl d3(0.0);
  72. // Arithmetic operators
  73. d3 = d1 + d2;
  74. // Equivalent direct call to operator function
  75. d3 = Dbl::op_Addition(d1, d2);
  76. Console::Write("Value of d3 is ");
  77. Console::WriteLine(d3.getVal());
  78. // Addition using integers
  79. d3 = d1 + 5;
  80. Console::Write("Value of d3 is now ");
  81. Console::WriteLine(d3.getVal());
  82. d3 = 5 + d1;
  83. Console::Write("Value of d3 is now ");
  84. Console::WriteLine(d3.getVal());
  85. // This does integer addition and then casts to a Dbl
  86. d3 = 5 + 5;
  87. // Logical operators
  88. if (d1 == d2)
  89. Console::WriteLine("Equal");
  90. else
  91. Console::WriteLine("Not equal");
  92. if (d1 != d2)
  93. Console::WriteLine("Not Equal");
  94. else
  95. Console::WriteLine("Equal");
  96. __box Dbl* pd2 = __box(d2);
  97. if (d1.Equals(pd2))
  98. Console::WriteLine("Equals: Equal");
  99. else
  100. Console::WriteLine("Equals: Not Equal");
  101. Dbl d4(10.0);
  102. if (d1.Equals(__box(d4)))
  103. Console::WriteLine("Equals: Equal");
  104. else
  105. Console::WriteLine("Equals: Not Equal");
  106. // Increment and decrement
  107. Dbl d5(1.0);
  108. Console::Write("Inc: initial d5=");
  109. Console::WriteLine(d5.getVal());
  110. d5++;
  111. Console::Write("Inc: d5++ =");
  112. Console::WriteLine(d5.getVal());
  113. Incr(d5);
  114. Console::Write("Inc: after Incr, d5 =");
  115. Console::WriteLine(d5.getVal());
  116.     return 0;
  117. }