c++ - 真正的小数字是什么? C++类

标签 c++ class

我知道我应该在类中包含一个“get_Diameter()”函数,以便访问私有(private)数据成员,但我一直无法弄清楚真正小的数字是从哪里来的。

(可以忽略 Rectangle 的东西——它是一个圆的问题)

驱动代码如下:

// classes example
#include <iostream>
using namespace std;

#include "rect2.h"
#include "roughCirc.h"

int main () {
  Rectangle rect (3,4);
  Rectangle rectb;
  cout << "rect area: " << rect.area() << endl;
  cout << "rectb area: " << rectb.area() << endl;
  cout << " " << endl;

  Circle circ (1.3);
  cout << "circle area: " << circ.area() << endl;

  Circle circB;
  cout << "circle area: " << circB.area() << endl;
  return 0;
}
/*
g++ -o main2 main2.cpp rect2.cpp roughCirc.cpp 
*/

类:roughCirc.h

class Circle {
    double diameter;
  public:
    Circle (double);
    Circle ();
    double area (void);
};

和roughCirc.cpp

#include <iostream>
using namespace std;

#include "roughCirc.h"

Circle::Circle (double) {
    diameter = 1.1212;
}

Circle::Circle () {
    diameter = 32.42;
}

double Circle::area(void) {
    double tmp = 3.1416 * 0.25 * diameter*diameter;
    cout << "diameter is: " << diameter << " and area is: " << tmp << endl;
}

和输出;

X@X:X$ ./main2
rect area: 12
rectb area: 25

circle area: diameter is: 1.1212 and area is: 0.987318
3.03428e-86
circle area: diameter is: 32.42 and area is: 825.5
3.03428e-86

不确定这是否重要,但我有来自 Debian 稳定版的最新最好的软件包。命令行位于驱动程序文件的底部。

最佳答案

你的函数被声明为返回一个double

double Circle::area(void) {
    double tmp = 3.1416 * 0.25 * diameter*diameter;
    cout << "diameter is: " << diameter << " and area is: " << tmp << endl;
}

但是您还没有返回 double 值的 return 语句。所以这一行

cout << "circle area: " << circB.area() << endl;

invoke undefined behavior同时输出 .area()。相反,您应该返回计算结果

double Circle::area() {
    double tmp = 3.1416 * 0.25 * diameter*diameter;
    cout << "diameter is: " << diameter << " and area is: " << tmp << endl;
    return tmp;
}

关于c++ - 真正的小数字是什么? C++类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50143703/

相关文章:

c++ - 在哪里可以找到 NSOrderedSet( Objective-C )源代码?按照 C++ 中的插入顺序从 SET 中读取元素?

c++ - 开发人员无法执行 .exe 错误 193 : %1 not a valid win32 application

c++ - 转换嵌套包的每个内包

java - 尝试在 java 中声明类时出现错误

具有不同成员的 C++ 结构 - 在运行时决定

用于检查类是否具有运算符/成员的 C++ 类型特征

c++ - 使用类中的列表列出 c++ 中的容器

c++ - Multisample framebuffer 仅与 renderbuffer 不完整

swift - 在字典中存储和访问对象数组 - Swift 3 - macOS

php - ZF2 : Dependency injection done the proper way