【发布时间】:2018-04-08 12:49:50
【问题描述】:
显式删除的构造函数是public、protected还是private在行为上是否存在差异?
例如,不可复制的类将具有已删除的复制构造函数(和已删除的复制分配)。构造函数对子类(或朋友)和类的外部用户均不可用,因为无论其访问控制如何,它都不存在。
我看到的唯一区别是不同作用域会以何种方式看到复制构造函数不存在 - 无论是不存在(就该作用域所知)还是被显式删除。
现在,为该类提供最好的正式接口可能是有益的——也就是说,如果每个人都知道该类是不可复制的,那么它应该被公开删除。编译器错误消息也可能提供更多信息。但除此之外 - 课堂行为是否会有任何实际可观察到的差异?也就是说,如果类的构造函数具有访问权限 X,那么如果该构造函数具有访问权限 Y,他就无法做到这一点?
【问题讨论】:
标签: c++ c++11 constructor