c++面向对象程序设计

下面程序定义了一个点类Dot和一个矩形Rec用来输出的矩阵对角线上两个顶点的坐标以及矩形的面积,请完成两个类的构造函数以及求面积函数的类外实现。(只需要将两个构造函数和求面积函数进行类外实现,不需要添加别的代码)

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/223484
  • 除此之外, 这篇博客: C++静态类型成员变量的初始化顺序(单例模式)中的 ⼀⽅⾯是因为程序的实际执⾏路径有多个决定因素(例如基于消息驱动模型的程序和多线程程序),有时是不可预知的; 另⼀⽅⾯是因为局部静态变量分布在程序代码各处,彼此直接没有明显的关联,很容易让开发者忽略它们之间的这种关系(这是最坑的地 ⽅)。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    既然提出问题,那么就讨论应对之道:
    (1)最简单的,避免使⽤局部静态变量,将变量的声明周期控制在开发者⼿中;
    (2)如果确有需要,那么尽量确保局部静态变量之间构造和析构是彼此独⽴互不相关的,换句话说,它们可以以任意的顺序被构造和析
    构;
    设计模式里的单例模式就有静态变量互相引用从而系统奔溃。
    测试程序

    #include <string>
    #include <iostream>
    using namespace std;
    class Log
    {
    public:
        static Log* GetInstance()
        {
            static Log oLog;
            return &oLog;
        }
     
        void Output(string strLog)
        {
            cout<<strLog<<(*m_pInt)<<endl;
        }
    private:
        Log():m_pInt(new int(3))
        {
        }
        ~Log()
        {cout<<"~Log"<<endl;
            delete m_pInt;
            m_pInt = NULL;
        }
        int* m_pInt;
    };
     
    class Context
    {
    public:
        static Context* GetInstance()
        {
            static Context oContext;
            return &oContext;
        }
        ~Context()
        {
            Log::GetInstance()->Output(__FUNCTION__);
        }
     
        void fun()
        {
            Log::GetInstance()->Output(__FUNCTION__);
        }
    private:
        Context(){}
        Context(const Context& context);
    };
     
    int main(int argc, char* argv[])
    {
        Context::GetInstance()->fun();
        return 0;
    }
    
    
    

    参考博客:https://www.freesion.com/article/7937607333/


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^