让我们尝试以下示例以了解静态数据成员的概念-
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