(C+;+;)乘法不会给出预期的结果 “这是我第一次编写C++程序,我现在使用的代码是:块,我很确定这个问题我可能根本不涉及这个程序,但是无论如何……
我想写一个简单的代码,创建两个“盒子”,计算它们的体积并打印在终端上。我在一个cpp文件中编写了以下代码:(C+;+;)乘法不会给出预期的结果 “这是我第一次编写C++程序,我现在使用的代码是:块,我很确定这个问题我可能根本不涉及这个程序,但是无论如何……,c++,C++,我想写一个简单的代码,创建两个“盒子”,计算它们的体积并打印在终端上。我在一个cpp文件中编写了以下代码: #include<iostream> using namespace std; class Box { public: double length; double breadth; double height; Box(double l, double b, double h) { l=length; b=br
#include<iostream>
using namespace std;
class Box
{
public:
double length;
double breadth;
double height;
Box(double l, double b, double h)
{
l=length;
b=breadth;
h=height;
}
};
int main()
{
double volume = 0.0;
Box BoxA(2.0, 3.2, 6.0);
Box BoxB(2.5, 4.0, 5.0);
volume = BoxA.length * BoxA.breadth * BoxA.height;
cout << "Box a volume = " << volume <<endl;
volume = BoxB.length * BoxB.breadth * BoxB.height;
cout << "Box b volume = " << volume <<endl;
return 0;
}
#包括
使用名称空间std;
类框
{
公众:
双倍长度;
双宽度;
双高;
盒子(双l,双b,双h)
{
l=长度;
b=宽度;
h=高度;
}
};
int main()
{
双体积=0.0;
盒子盒A(2.0,3.2,6.0);
盒子B(2.5,4.0,5.0);
体积=BoxA.长度*BoxA.宽度*BoxA.高度;
cout构造函数为传递的参数赋值
请尝试以下方法:
class Box
{
public:
double length;
double breadth;
double height;
Box(double l, double b, double h)
{
length=l;
breadth=b;
height=h;
}
};
正如其他人提到的,初始化列表和使用<>代码>使用< /COD>可以有其他改进,特别是对C++和C++编程的研究是一个正在进行的旅程,从来不是目的地,但这是对当前问题的直接修复。争论
#include<iostream>
class Box
{
public:
double length;
double breadth;
double height;
Box(double l, double b, double h)
{
length = l; // assign to the member variables, not parameters
breadth = b;
height = h;
}
};
int main(void)
{
double volume = 0.0;
Box BoxA(2.0, 3.2, 6.0);
Box BoxB(2.5, 4.0, 5.0);
volume = BoxA.length * BoxA.breadth * BoxA.height;
std::cout << "Box a volume = " << volume << std::endl;
volume = BoxB.length * BoxB.breadth * BoxB.height;
std::cout << "Box b volume = " << volume << std::endl;
return 0;
}
请尝试以下方法:
class Box
{
public:
double length;
double breadth;
double height;
Box(double l, double b, double h)
{
length=l;
breadth=b;
height=h;
}
};
正如其他人所提到的,对于初始化列表和使用<代码>使用可以有其他改进,特别是C++和C++编程的研究是一个正在进行的旅程,从来不是目的地,但这是直接解决问题的直接解决方案。
#include<iostream>
class Box
{
public:
double length;
double breadth;
double height;
Box(double l, double b, double h)
{
length = l; // assign to the member variables, not parameters
breadth = b;
height = h;
}
};
int main(void)
{
double volume = 0.0;
Box BoxA(2.0, 3.2, 6.0);
Box BoxB(2.5, 4.0, 5.0);
volume = BoxA.length * BoxA.breadth * BoxA.height;
std::cout << "Box a volume = " << volume << std::endl;
volume = BoxB.length * BoxB.breadth * BoxB.height;
std::cout << "Box b volume = " << volume << std::endl;
return 0;
}
类框
{
公众:
双倍长度;
双宽度;
双高;
盒子(双l,双b,双h)
{
length=l;//分配给成员变量,而不是参数
宽度=b;
高度=h;
}
};
内部主(空)
{
双体积=0.0;
盒子盒A(2.0,3.2,6.0);
盒子B(2.5,4.0,5.0);
体积=BoxA.长度*BoxA.宽度*BoxA.高度;
std::cout#包括
类框
{
公众:
双倍长度;
双宽度;
双高;
盒子(双l,双b,双h)
{
length=l;//分配给成员变量,而不是参数
宽度=b;
高度=h;
}
};
内部主(空)
{
双体积=0.0;
盒子盒A(2.0,3.2,6.0);
盒子B(2.5,4.0,5.0);
体积=BoxA.长度*BoxA.宽度*BoxA.高度;
std::cout编写构造函数的常用方法是使用初始值设定项列表:
Box(double l, double b, double h) : length(l), breadth(b), height(h)
{
}
Box(double length, double breadth, double height)
: length(length), breadth(breadth), height(height)
{ }
这可以防止与您完全相同的错误,即交换参数和成员。如果您尝试编写:l(长度),
编译器会立即告诉您l
不是框的成员
您甚至不需要在初始值设定项列表中使用单独的名称:
Box(double l, double b, double h) : length(l), breadth(b), height(h)
{
}
Box(double length, double breadth, double height)
: length(length), breadth(breadth), height(height)
{ }
这会使用参数height
初始化Box::height
编写构造函数的常用方法是使用初始值设定项列表:
Box(double l, double b, double h) : length(l), breadth(b), height(h)
{
}
Box(double length, double breadth, double height)
: length(length), breadth(breadth), height(height)
{ }
这可以防止与您完全相同的错误,即交换参数和成员。如果您尝试编写:l(长度),
编译器会立即告诉您l
不是框的成员
您甚至不需要在初始值设定项列表中使用单独的名称:
Box(double l, double b, double h) : length(l), breadth(b), height(h)
{
}
Box(double length, double breadth, double height)
: length(length), breadth(breadth), height(height)
{ }
这确实初始化了Box::height
,参数height
不应该l=length;
等等。相反,应该是length=l;
吗?在构造函数中,您的赋值方式是错误的!在您选择接受的答案之前,我想指出的是,在构造函数。所有成员变量(以及基类)在构造函数中构造-可以显式地使用初始值设定项,也可以隐式地由编译器使用该构造函数的默认构造函数。通过赋值,这可能会成为一个不必要的默认构造,并伴随以下赋值。对于3个双成员变量来说,这并不是很重要,但在其他情况下可能如此。不应该l=length;
etc.belength=l;
相反?在构造函数中,您的赋值方式是错误的!在您选择接受的答案之前,我想指出的是,一般来说,构造函数中的初始值设定项列表应该优先于赋值。所有成员变量(以及基类)在构造函数中构造-可以显式地使用初始值设定项,也可以隐式地由编译器使用该构造函数的默认构造函数。通过赋值,这可能会成为不必要的默认构造,并伴随以下赋值。对于3个双成员变量来说,这并不是很重要,但在其他情况下可能会如此。