• 一段小代码的思考


    已经建立了一个新类:

    class Virus{
        static int virusCount = 0;
        
        public Virus(){
            virusCount++;
        }
        
        static int getVirusCount(){
            return virusCount;
        }
    }
    

      在程序中用到了上面这个类:

     1 public class VirusLab {
     2     public static void main(String[] args) {
     3     int numVirus = Integer.parseInt(args[0]);
     4     if(numVirus>0){
     5         Virus[] virii = new Virus[numVirus];
     6         for(int i = 0;i<numVirus;++i)
     7             virii[i] = new Virus();
     8     System.out.println("There are "+ Virus.getVirusCount() + " Viruses.");
     9     }
    10         
    11     }
    12 }

    重点关注以上代码中的地5,6,7行:

    实验发现,在Java中,新建一个类的数组时(Line 5),并不会调用类的构造函数;但是在新建每一个类对象时(Line 7),会自动调用类的构造函数。这一点和C++好像有比较大的不同。谨记之。

    C++中,凡事在用new新建类对象的地方,都会自动调用类的构造函数:

     1 #include "stdafx.h"
     2 #include <iostream>
     3 #include <string>
     4 using namespace std;
     5 
     6 class Virus
     7 {
     8 public:
     9     Virus(){
    10         cout<<"empty constructor!"<<endl;
    11     }    
    12     Virus(string temp){
    13         cout<<temp<<" constructor1!"<<endl;
    14     }
    15 
    16     ~Virus(){}    
    17 };
    18 
    19 

    20 int main(int argc, char* argv[])
    21 {
    22     Virus* virii = new Virus("test");
    23     cout<<endl;
    24     Virus* virii2 = new Virus[4];
    25 
    26     return 0;
    27 }

    以上代码的输出为:

     

  • 相关阅读:
    通讯录排序(c++)
    常用头文件的可调用函数的归类笔记
    常用头文件的可调用函数的归类笔记
    一维数组基础笔记(声明,定义,调用)
    一维数组基础笔记(声明,定义,调用)
    数据库安全
    python不常见用法
    异常处理-做一个优雅的程序员
    TCP/IP
    Python基础01
  • 原文地址:https://www.cnblogs.com/jiayouwyhit/p/3424958.html
Copyright © 2020-2023  润新知