C++面向对象例题:构建一个立方体类

练习案例1:设计立方体类

  • 设计立方体(Cube)
  • 求出立方体的面积和体积
  • 分别用全局函数成员函数判断两个立方体是否相等
#include <iostream>
#include <string>
using namespace std;
// 设计立方体(Cube)
// 求出立方体的面积和体积
// 分别用全局函数和成员函数判断两个立方体是否相等
class Cube
{
public:
    void setl(int length)
    {
        l = length;
    }
    int getl()
    {
        return l;
    }

    void setw(int W)
    {
        w = W;
    }
    int getW()
    {
        return w;
    }

    void seth(int high)
    {
        h = high;
    }
    int geth()
    {
        return h;
    }

    int calculateS(){
        return 2*l*w+2*w*h+2*l*h;
    }

    int calculateV(){
        return  l*w*h;
    }
    //利用成员函数判断
    bool isSameByClass(Cube &c){
        if(l==c.getl() && h==c.geth()&&w==c.getW())
        {
            return true;
        }
        return false;
    }

private: //属性都尽量设置为私有
    int l;
    int w;
    int h;
};

//全局函数判断两个立方体是否相等
bool isSame(Cube &c1,Cube &c2){
    if(c1.getl()==c2.getl() && c1.geth()==c2.geth()&&c1.getW()==c2.getW()){
        return true;
    }
    else{
        return false;
    }
}
int main()
{
    Cube c1;
    c1.setl(10);
    c1.setw(10);
    c1.seth(10);
    cout<<c1.calculateS()<<endl;
    cout<<c1.calculateV()<<endl;


    Cube c2;
    c2.setl(10);
    c2.setw(10);
    c2.seth(10);

    bool ret=isSame(c1,c2);
    if(ret==true){
        cout<<"same"<<endl;
    }else{
        cout<<"different"<<endl;
    }

    ret=c1.isSameByClass(c2);
    if(ret==true){
        cout<<"same"<<endl;
    }else{
        cout<<"different"<<endl;
    }
    system("pause");
    return 0;
}

这里的难点是全局函数和成员函数。
这里需要用到引用的方法来传递参数,因为我们并没有设计一个指针来指向对象的地址,要想改变对象的值必须要使用引用否则无法改变。
但是这道题只是一个比较大小的题,用不用&并不影响最后的结果。

全局函数可以直接传入两个对象进行比较,但是成员函数由于是在类里面,我们可以新建一个类再传入另一个类进行比较,相当于嵌套。

posted @ 2021-05-12 10:04  Zeker62  阅读(176)  评论(0编辑  收藏  举报