定义一个氧化物类Oxide,它包含四个私有数据成员,第一、三个数据成员(按惯例第三个成员必定是氧)都是元素类(Element)对象,第二、四个数据成员是这两个元素的个数。 元素类需要单独定义,包含私有数据成员英文元素符号以及必要的成员函数。 请为Oxide类定义有关成员函数,包括构造函数、打印分子式的函数。 为两个类添加你认为必要的其它成员函数。 在主函数中建立元素类的几个对象(如氢H、碳C、铁Fe、氧O等),再建立Oxide类的几个对象(如H2O水、CO一氧化碳、CO2二氧化碳、SO2二氧化硫、P2O5五氧化二磷、FeO氧化亚铁、Fe3O4四氧化三铁等等)并进行测试。 提示:当元素个数为1时,其分子式不显示个数,例如一氧化碳写作CO而不是C1O1。 mian函数已经写好,请根据main函数的内容完成相关类的定义。 int main(){ string symbol="H"; Element e1(symbol); Element e2; Oxide o1(e1,2,e2,1); o1.printformula(); symbol="C"; Element e3(symbol); Oxide o2(e3,1,e2,1); o2.printformula(); symbol="S"; Element e4(symbol); Oxide o3(e4,1,e2,2); o3.printformula(); symbol="Fe"; Element e5(symbol); Oxide o4(e5,3,e2,4); o4.printformula(); symbol="P"; Element e6(symbol); Oxide o5(e6,2,e2,5); o5.printformula(); return 0; }
时间: 2024-03-10 20:50:07 浏览: 117
以下是元素类Element的定义:
```cpp
class Element {
private:
string symbol; // 元素符号
public:
Element() {}
Element(string s) : symbol(s) {}
string getSymbol() const { return symbol; }
};
```
以下是Oxide类的定义:
```cpp
class Oxide {
private:
Element e1; // 元素1
int n1; // 元素1的个数
Element e2; // 元素2,氧
int n2; // 元素2的个数
public:
Oxide() {}
Oxide(Element el1, int num1, Element el2, int num2) : e1(el1), n1(num1), e2(el2), n2(num2) {}
void printformula() const {
cout << e1.getSymbol();
if (n1 > 1) cout << n1;
cout << e2.getSymbol();
if (n2 > 1) cout << n2;
cout << endl;
}
};
```
其中,构造函数用于初始化四个私有数据成员,printformula函数用于打印分子式。在打印分子式时,如果元素个数为1,不显示个数。
阅读全文
相关推荐


















