代码:
int x = 2;
int* pointerone = &x;
int* pointertwo = pointerone;
因此pointerone
的地址被分配给pointertwo
,但是被调用的复制构造函数和保存地址的对象被复制到另一个指针的地址对象中,就像所有默认值一样复制执行浅拷贝的其他类型的构造函数。如果它符合我的预期,指针的复制构造函数如何?
答案 0 :(得分:4)
此处不涉及构造函数。实际上这段代码是纯C代码。
int x = 2;
// pointerone points to the memory address of x
int* pointerone = &x;
// pointertwo points to the same address than pointerone,
// therefore it points also to the memory address of x
int* pointertwo = pointerone;
就是这样。
即使在C ++中,指针也没有构造函数,正如int
类型没有构造函数一样。
答案 1 :(得分:0)
对于对称性,您可以假装调用指针的复制构造函数(这将涉及复制单个数字“内存地址”)。
实际上,指针是内置类型的,并且没有构造函数本身。编译器具有内置逻辑,告诉它使程序做什么。
答案 2 :(得分:0)
当你用另一个指针的值初始化一个指针时,你正在为同一个内存地址创建另一个变量,正如@Michael所说的那样。
但要小心这样做。如果删除其中一个指针并在程序的另一个点取消引用另一个指针,则会引发异常,如果处理不当,则会导致程序崩溃。
以此为例:
bottleneck_tensor