最近在一次采访中有人问我有关复制构造函数的参数。
[编辑]
作为实现复制构造函数功能的C++语言设计者,为什么要在指向const对象的const指针上选择常量引用参数。
我有一些想法,因为可以将指针分配给NULL,这在复制构造函数中可能没有意义(在语义上),并且指针变量是一个独立的对象(就效率而言可能不太好)而引用只是实际对象的别名(因此,传递对象的更好方法)。
还有其他想法吗?
最佳答案
因为Stroustrup希望类像原始类型。初始化int
变量时:
int x = 5;
int y = x; // Why would you write int y = &x; ?
将常量指针传递给常量对象与C++带给C的内容不一致。C++中的类只是用户定义的类型,如果它们不能像原始类型那样工作,那么它们又是什么呢?
在没有引用的情况下使用C++进行编程会很痛苦的另一个示例是运算符重载。假设您必须编写:
myclass myobj1, myobj2, myobj3;
&myobj3 = &myobj1 + &myobj2;