C++中类的三大函数是什么、

一般同时出现,有一个是析构函数。... 一般同时出现,有一个是析构函数。 展开
 我来答
assinass
推荐于2016-06-14 · TA获得超过194个赞
知道答主
回答量:88
采纳率:0%
帮助的人:102万
展开全部
三法则(英语:rule of three,the Law of The Big Three,The Big Three;三法则,三大定律)在 C++ 程序设计里,它是一个以设计的基本原则而制定的定律,三法则的要求在于,假如类有明显地定义下列其中一个成员函数,那么程序员必须连其他二个成员函数也一同编写至类内,亦即下列三个成员函数缺一不可。:

析构函数(Destructor)
复制构造函数(copy constructor)
复制赋值运算符(copy assignment operator)

上述三个函数是特别的成员函数,假如程序员没有自行定义或是编写声明它们,那么编译器会自动地创建它们,并且会编译至应用程序内。相反地,假如程序员有定义上述三者其中一个函数,那么由编译器自动产生出来的上述三个函数是不会搭配到这个类内。三法则(Rule of three)这个专有名词是由 Marshall Cline 于 1991 年创立的。

这个法则的修正版本是,假如析构函数有用到 RAII(资源的取得就是初始化,Resource Acquisition Is Initialization),可以使得析构函数的定义更加明确(也就是所谓的二大定律,The Law of The Big Two[3])。
因为隐性产生(英语:implicitly-generated;由编译器自动产生)的构造函数与赋值运算符可以很容易地复制类内所有的数据成员[4],当数据成员是指针型态时,指针地址会随着类而跟着被复制,要注意的是,直接地复制指针地址是一项非常危险的动作,所以只要类有封装指针型态的数据结构,或是类有封装外部引用的数据成员(例如:指针型态的数据成员),程序员应该为此定义显性的(英语:explicit;由程序员来编写清楚明确的)复制构造函数,以及复制赋值运算符。

PS.
根据我的理解,用到自己写析构的话一般得释放自己分配的空间,而涉及到自己分配空间的话,其成员变量就有指针等类型,这样的话就得自己写赋值操作符和复制构造函数了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式