CC20020419 2022-04-04 08:36 采纳率: 85%
浏览 66
已结题

关于静态成员的练习,我的代码哪里错了

编写一个类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>
#include<iostream>
using namespace std;
class Class15_1{
    int value;

    
    public:
        static int staticV;
        Class15_1(int a){
            value=a;
            staticV+=1;
            
        }
        void show(){
            cout<<value<<endl;
            cout<<staticV<<endl;
        }
        ~Class15_1(){
            staticV-=1;
            
        }
}; 
Class15_1::staticV=0;

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;
    
}
  • 写回答

4条回答 默认 最新

  • 关注
    int Class15_1::staticV = 0;
        Class15_1() = default;
        p[0] = Class15_1(5);
        delete[] p;

    四个问题:

    第一,非const静态类staticV在类外部是声明和赋值,不能少int

    第二,当声明一个非默认构造函数,如果不继续声明默认构造函数,就禁用默认构造函数,没有默认构造函数就不能new类的数组,因为无法初始化。

    第三,没有Class15_1.Class15_1(int n)这种用法,但可以赋值。

    第四,delete数组要加 [ ]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表
  • ¥15 DbVisualizer Pro 12.0.7 sql commander光标错位 显示位置与实际不符