class Rectangle{ private: double length; double wIDth; public: voID setLength(double); voID setWIDth(double); double getLength(); double getWIDth(); double getArea();};class Carpet{ private: double pricePerSqYd; Rectangle size; // size 是 Rectangle 类的实例 public: voID setPricePerYd(double p); voID setDimensions(double l,double w); double getTotalPrice();};请注意,Carpet 类有一个名为 size 的成员变量,它是 Rectangle 类的一个实例。Carpet 类可以使用此对象来存储房间尺寸并计算购买地毯的面积。图 1 说明了两个类是如何相关的。当一个类被嵌套在另一个类中时,称为对象组合。
图 1 对象组合
下面的程序使用了这两个类来创建计算地毯销售价格:
#include <iostream>using namespace std;class Rectangle{ private: double length; double wIDth; public: voID setLength(double len) { length = len; } voID setWIDth(double wID) { wIDth = wID; } double getLength() { return length; } double getWIDth() { return wIDth; } double getArea() { return length * wIDth; }};class Carpet{ private: double pricePerSqYd; Rectangle size; public: voID setPricePerYd(double p) { pricePerSqYd = p; } voID setDimensions(double len,double wID) { size.setLength(len/3); // Convert feet to yards size.setWIDth (wID/3); } double getTotalPrice() { return (size.getArea() * pricePerSqYd); }};int main(){ Carpet purchase; double pricePerYd; double length; double wIDth; cout << "Room length in feet: "; cin >> length; cout << "Room wIDth in feet : "; cin >> wIDth; cout << "Carpet price per sq.yard: "; cin >> pricePerYd; purchase.setDimensions(length,wIDth); purchase.setPricePerYd(pricePerYd); cout << "\nThe total price of my new " << length << " x " << wIDth << " carpet is $" << purchase.getTotalPrice() << endl; return 0;}程序运行结果:
Room length in feet: 16.5
Room wIDth in feet : 12
Carpet price per sq.yard: 22,49
The total price of my new 16.5 x 12 carpet is $494.78
另外值得注意的是,在第 43、44 和 48 行中,Carpet 类函数如何调用 Rectangle 函数。正如用户程序通过 Carpet 对象的名称调用 Carpet 函数一样,Carpet 类函数必须通过其 Rectangle 对象的名称调用 Rectangle 函数。在第 35 行中定义的 Rectangle 对象被命名为 size,这就是为什么 Carpet 函数使用以下语句来调用它:
size.getArea()
总结以上是内存溢出为你收集整理的C++对象做成员变量(无师自通)全部内容,希望文章能够帮你解决C++对象做成员变量(无师自通)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)