C++对象做成员变量(无师自通)

C++对象做成员变量(无师自通),第1张

概述有时将一个类的对象嵌套在另一个类中是很有用的。例如,来看以下声明: class Rectangle{ private: double length; double width; public: void setLength(double); void setWidth(double); double getLength(); double getW 有时将一个类的对象嵌套在另一个类中是很有用的。例如,来看以下声明:
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

此程序中,其中的客户程序定义了一个名为 purchase 的 Carpet 对象,只使用它来调用 Carpet 类函数,而不是 Rectangle 类函数。它甚至不知道 Carpet 类里面有一个 Rectangle 对象。

另外值得注意的是,在第 43、44 和 48 行中,Carpet 类函数如何调用 Rectangle 函数。正如用户程序通过 Carpet 对象的名称调用 Carpet 函数一样,Carpet 类函数必须通过其 Rectangle 对象的名称调用 Rectangle 函数。在第 35 行中定义的 Rectangle 对象被命名为 size,这就是为什么 Carpet 函数使用以下语句来调用它:

size.getArea()

总结

以上是内存溢出为你收集整理的C++对象做成员变量(无师自通)全部内容,希望文章能够帮你解决C++对象做成员变量(无师自通)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1231282.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存