我知道我应该在类中包含一个“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/