CC20020419 2022-04-03 23:19 采纳率: 85%
浏览 111
已结题

我写的程序哪里出了问题,编译不通过

编写一个类Class15_1,声明一个数据成员int value和一个静态数据成员int staticV(初始化为0),让构造函数初始化数据成员value,并让静态数据成员staticV加1,让析构函数把静态数据成员staticV减1。主程序中使用new操作符创建三个堆对象,value值分别为5,80,20。然后显示它们的数据成员和静态数据成员,再依次使用delete操作符析构每个对象,并显示对静态数据成员的影响。
输入无输出5
80
20
3
2
1
0


#include<bits/stdc++.h>
using namespace std;
class Class15_1{
    int value;
    int static staticV;
    public:
        
        Class15_1(int a){
            value=a;
            staticV+=1;
            
        }
        void show(){
            cout<<value<<endl;
            cout<<staticV<<endl;
        }
        ~Class15_1(){
            staticV-=1;
            
        }
}; 

int main(){
    Class15_1* p=new Class15_1[3];
    
    p[0]->Class15_1(5);
    p[1]->Class15_1(80);
    p[2]->Class15_1(20);
    p[0]->show();
    p[1]->show();
    p[2]->show();
    delete p;
    
}
  • 写回答

3条回答 默认 最新

  • qzjhjxj 2022-04-04 12:03
    关注

    修改如下,供参考:

    #include <iostream>
    //#include<bits/stdc++.h>
    using namespace std;
    class Class15_1{
        int value;
        int static staticV; //声明但未定义,还未分配内存
        public:
    
            Class15_1(int a){
                value=a;
                staticV+=1;
            }
            void show(){
                cout<<value<<endl;
                cout<<staticV<<endl;
            }
            ~Class15_1(){
                staticV-=1;
                show();
            }
    };
    int Class15_1::staticV = 0;//静态成员变量,初始化。
    
    int main(){
        //Class15_1* p = new Class15_1[3];
        Class15_1* p1 = new Class15_1(5);
        Class15_1* p2 = new Class15_1(80);
        Class15_1* p3 = new Class15_1(20);
                   //p[0]->Class15_1(5);
                   //p[1]->Class15_1(80);
                   //p[2]->Class15_1(20);
        p1->show();//p[0]->show();
        p2->show();//p[1]->show();
        p3->show();//p[2]->show();
    
        cout<<endl<<"delete"<<endl;
        delete p1;
        p1=NULL;
        delete p2;
        p2=NULL;
        delete p3;
        p3=NULL;
       
        return 0;
    }
    
    

    或是这样写,更符合题意:

    #include <iostream>
    //#include<bits/stdc++.h>
    using namespace std;
    class Class15_1{
        int value;
        int static staticV; //声明但未定义,还未分配内存
        public:
    
            Class15_1(int a){
                value=a;
                staticV+=1;
            }
            void show(){
                cout<<value<<endl;
                cout<<staticV<<endl;
            }
            ~Class15_1(){
                staticV-=1;
                show();
            }
    };
    int Class15_1::staticV = 0;//静态成员变量,初始化。
    
    int main(){
        //Class15_1* p = new Class15_1[3];
        Class15_1* p1 = new Class15_1(5);
        p1->show();
        Class15_1* p2 = new Class15_1(80);
        p2->show();
        Class15_1* p3 = new Class15_1(20);
        p3->show();
        //p[0]->Class15_1(5);
        //p[1]->Class15_1(80);
        //p[2]->Class15_1(20);
        //p[0]->show();
        //p[1]->show();
        //p[2]->show();
    
        cout<<endl<<"delete"<<endl;
        delete p1;
        p1=NULL;
        delete p2;
        p2=NULL;
        delete p3;
        p3=NULL;
    
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月12日
  • 已采纳回答 4月4日
  • 创建了问题 4月3日

悬赏问题

  • ¥15 怎样才能让鼠标沿着线条的中心线轨迹移动
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?