c – 规则“用户定义但不做任何析构函数也是一个非平凡的析构函
发布时间:2020-12-16 07:24:18 所属栏目:百科 来源:网络整理
导读:class Base{public: ~Base() {}private: int val;};Base base; // a global variable 看,析构函数什么都不做,就像c complier提供的默认析构函数一样.但是析构函数仍然是一个非平凡的析构函数,可以追溯到What is a non-trivial destructor in C++?之后 我知道
class Base { public: ~Base() {} private: int val; }; Base base; // a global variable 看,析构函数什么都不做,就像c complier提供的默认析构函数一样.但是析构函数仍然是一个非平凡的析构函数,可以追溯到What is a non-trivial destructor in C++?之后 我知道,标准中的每个规则都必须严格. 但是,通过我粘贴的上层代码,用户定义的析构函数确实没有做任何事情!为什么它也是非平凡的?我不明白…. 有什么魔法我不知道吗? 解决方法
规则绝对禁止定义赋予提供空值的含义:它指定不得在提供存储的数组中忘记其实例.析构函数的作用(如果有的话)可以被视为可能在将来版本中更改的实现细节.它还根据是否在类定义中定义了“空”析构函数来避免意义的改变;如果不是,它甚至可以通过二进制兼容来改变它来做某事.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |