class Cat { init() { print("Cat init(\(ObjectIdentifier(self))") } deinit { print("Cat deinit(\(ObjectIdentifier(self))") } func newCat() -> Cat { return Cat() } } func f0(_ x: Cat) { print("f0") } func main() { print("a") f0(Cat().newCat()) print("b") } main()
a Cat init(ObjectIdentifier(0x00007fba7251c800) Cat init(ObjectIdentifier(0x00007fba725179b0) Cat deinit(ObjectIdentifier(0x00007fba7251c800) f0 Cat deinit(ObjectIdentifier(0x00007fba725179b0) b
Cat()
は newCat()
の呼び出し前に破棄される。