Chu*_*dad 2 c++ constructor destructor implicit copy-constructor
struct Base{
Base(Base &){} // suppress default constructor
};
struct Derived : Base{
};
int main(){
Derived d;
}
Run Code Online (Sandbox Code Playgroud)
显示的代码给出了错误,因为"Base"的默认构造函数(隐式)被抑制.事实上,该标准以12.1美元计价"If there is no user-declared constructor for class X, a default constructor is implicitly declared."
有三件事:
a)标准是否说任何地方如果用户声明构造函数存在于类中,则默认构造函数(隐式)被抑制.它基本上是上面的措辞否定或是否再次暗示:)?
b)为什么会那样?
c)为什么相同的规则不适用于默认的析构函数?
我认为a)被你的引言充分明确地暗示了.
至于"为什么" - 非常简单:默认构造函数并不总是有意义的; 如果没有办法压制它,这将大大削弱C++.
至于c),没有析构函数的类(没有"默认",只是普通的析构函数)根本没有意义.
归档时间: |
|
查看次数: |
649 次 |
最近记录: |