d不变类中析构器

原文
不变类,并不一定保存在只读区.
析构器,只是对象终止时,调用的一片代码,析构器不应访问对象成员.

struct S {
  ~this() {
    import std.stdio;
    writeln("done");
  }
}

void main() {
  immutable a = S();
  auto b = immutable(S)();
}

两个对象,都是不变的,因而都执行了析构器.
destroy(),由程序员调用,此时会初值,而其他情况,不会赋值被析构对象.
当,不再有对象的引用时,垃集才收集他们.对象成员值与此无关.

~this() {
    writeln(__FUNCTION__);
}

~this() immutable {//表示`不变`对象的析构器
    writeln(__FUNCTION__);
}

但报错误,是因为实现问题.对应的构造器是这样:

import std.stdio;

struct S {
  this(int) {
    writeln(__PRETTY_FUNCTION__);
  }

  this(int) immutable {
    writeln(__PRETTY_FUNCTION__);
  }
}

void main() {
  auto a = immutable(S)(0);
  auto b = S(1);
}
posted @   zjh6  阅读(11)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示