小编H0l*_*4wg的帖子

在构造函数中初始化实例变量有什么区别?

在下面的代码示例中,milk由构造函数初始化,而egg不是.milk.spill()不是段错误,但egg.crack()确实如此.初始化实例变量的两种方法有什么区别?为什么前者正确而后者导致段错误?

import std.stdio;

void main() {
  auto k = new Kitchen();
  k.pollute();
}

class Kitchen {
  Milk milk;
  Egg egg = new Egg();

  this() {
    milk = new Milk();
  }

  void pollute() {
    writeln("spilling milk");
    milk.spill();
    writeln("cracking egg");
    egg.crack();
  }
}

class Milk {
  bool spilt = false;
  void spill() { spilt = true; }
}

class Egg {
  bool cracked = false;
  void crack() { cracked = true; }
}
Run Code Online (Sandbox Code Playgroud)

d

4
推荐指数
1
解决办法
71
查看次数

标签 统计

d ×1