无涯教程-D语言 - 类静态方法函数

49 阅读1分钟

让我们尝试以下示例以了解静态数据成员的概念-

import std.stdio;

class Box { public: static int objectCount=0;

  </span><span class="com">//构造函数定义</span><span class="pln">
  </span><span class="kwd">this</span><span class="pun">(</span><span class="kwd">double</span><span class="pln"> l</span><span class="pun">=</span><span class="lit">2.0</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">double</span><span class="pln"> b</span><span class="pun">=</span><span class="lit">2.0</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">double</span><span class="pln"> h</span><span class="pun">=</span><span class="lit">2.0</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> 
     writeln</span><span class="pun">(</span><span class="str">"Constructor called."</span><span class="pun">);</span><span class="pln"> 
     length</span><span class="pun">=</span><span class="pln">l</span><span class="pun">;</span><span class="pln"> 
     breadth</span><span class="pun">=</span><span class="pln">b</span><span class="pun">;</span><span class="pln"> 
     height</span><span class="pun">=</span><span class="pln">h</span><span class="pun">;</span><span class="pln"> 
      
     </span><span class="com">//每次创建对象时增加</span><span class="pln">
     objectCount</span><span class="pun">++;</span><span class="pln"> 
  </span><span class="pun">}</span><span class="pln"> 

  </span><span class="kwd">double</span><span class="pln"> </span><span class="typ">Volume</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> 
     </span><span class="kwd">return</span><span class="pln"> length </span><span class="pun">*</span><span class="pln"> breadth </span><span class="pun">*</span><span class="pln"> height</span><span class="pun">;</span><span class="pln"> 
  </span><span class="pun">}</span><span class="pln">

private: double length; //长 double breadth; //宽 double height; //高 };

void main() { Box Box1=new Box(3.3, 1.2, 1.5); //实例化box1 Box Box2=new Box(8.5, 6.0, 2.0); //实例化box2

//打印对象总数。 writeln("Total objects: ",Box.objectCount);
}

编译并执行上述代码后,将产生以下输出-

Constructor called. 
Constructor called. 
Total objects: 2

静态函数

静态成员函数只能从类外部访问,让我们尝试以下示例以了解静态函数成员的概念-

import std.stdio;

class Box { public: static int objectCount=0;

  </span><span class="com">//构造函数定义</span><span class="pln">
  </span><span class="kwd">this</span><span class="pun">(</span><span class="kwd">double</span><span class="pln"> l</span><span class="pun">=</span><span class="lit">2.0</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">double</span><span class="pln"> b</span><span class="pun">=</span><span class="lit">2.0</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">double</span><span class="pln"> h</span><span class="pun">=</span><span class="lit">2.0</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> 
     writeln</span><span class="pun">(</span><span class="str">"Constructor called."</span><span class="pun">);</span><span class="pln"> 
     length</span><span class="pun">=</span><span class="pln">l</span><span class="pun">;</span><span class="pln"> 
     breadth</span><span class="pun">=</span><span class="pln">b</span><span class="pun">;</span><span class="pln"> 
     height</span><span class="pun">=</span><span class="pln">h</span><span class="pun">;</span><span class="pln"> 

     </span><span class="com">//每次创建对象时增加</span><span class="pln">
     objectCount</span><span class="pun">++;</span><span class="pln"> 
  </span><span class="pun">}</span><span class="pln">

  </span><span class="kwd">double</span><span class="pln"> </span><span class="typ">Volume</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
     </span><span class="kwd">return</span><span class="pln"> length </span><span class="pun">*</span><span class="pln"> breadth </span><span class="pun">*</span><span class="pln"> height</span><span class="pun">;</span><span class="pln"> 
  </span><span class="pun">}</span><span class="pln">

  </span><span class="kwd">static</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> getCount</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> 
     </span><span class="kwd">return</span><span class="pln"> objectCount</span><span class="pun">;</span><span class="pln"> 
  </span><span class="pun">}</span><span class="pln"> 

private: double length; //长 double breadth; //宽 double height; //高 };

void main() { //在创建对象之前打印对象总数。 writeln("Inital Stage Count: ",Box.getCount());

Box Box1=new Box(3.3, 1.2, 1.5); //Declare box1 Box Box2=new Box(8.5, 6.0, 2.0); //Declare box2

//创建对象后打印对象总数。 writeln("Final Stage Count: ",Box.getCount()); }

编译并执行上述代码后,将产生以下输出-

Inital Stage Count: 0 
Constructor called. 
Constructor called
Final Stage Count: 2 

参考链接

www.learnfk.com/d-programmi…