为什么必须通过引用传递复制构造函数的参数?
请考虑以下代码(我有意将 MyPoint编写为此示例的引用类型)
public class MyPoint
{
public int x;
public int y;
}
Run Code Online (Sandbox Code Playgroud)
它是普遍公认的(至少在C#中)当你通过引用传递时,该方法包含对被操作对象的引用,而当你通过值传递时,该方法复制被操纵的值,因此全局范围中的值是不受影响.
例:
void Replace<T>(T a, T b)
{
a = b;
}
int a = 1;
int b = 2;
Replace<int>(a, b);
// a and b remain unaffected in global scope since a and b are value types.
Run Code Online (Sandbox Code Playgroud)
这是我的问题; MyPoint是引用类型,所以我希望在相同的操作Point,以取代a与b在全球范围内.
例:
MyPoint a = new MyPoint { x = 1, y = 2 };
MyPoint b = new …Run Code Online (Sandbox Code Playgroud) c# value-type reference-type pass-by-reference pass-by-value
我对此有一些困惑"可以将对象作为值传递给复制构造函数"编译器明确拒绝这一点,这意味着它是不可能的.你能帮我理解一下吗?
class Dummy{
Dummy(Dummy dummy){ // This is not possible
}
};
Run Code Online (Sandbox Code Playgroud)
那么为什么它会说"复制构造函数会在使用值传递时导致递归调用."
我正在阅读关于C++课程的讲义.在注释中,他们说类的复制构造函数签名是
MyClass(MyClass及其他)
和
MyClass(MyClass其他)
不行.这是为什么?
谢谢!