般来说，假如程式设计师没有自行编写复制建构子，那么编译器会自动地替每一个类别建立一个复制建构子；相反地，程式设计师有自行编写复制建构子，那么编译器就不会建立它。当物件包括指标或是不可分享的参照时，程式设计师编写显性的复制建构子是有其必要性的，例如处理档案的部分，除了复制建构子之外，应该还要再编写解构子与设定运算子的部分，也就是三法则。下述代码编译时报错。因为复制构造函数的参数如果是传值，将导致对自身无限递归。class X；X(X copy_from_me);X(const X copy_f