私はスマートポインタと少し混乱しています。次のコードでは、& 演算子は、スマート ポインター割り当てのアドレスを返す必要がありますか?それとも、制御しているポインターのアドレスを返す必要がありますか?
main() {
std::shared_ptr<int> i = std::shared_ptr<int>(new int(1));
std::shared_ptr<int> j = i;
printf("(%p, %p)\n", &i, &j);
}
コードを実行すると、別のアドレスが得られました。生のポインターを使用して同等のコードを実行すると、同じアドレスが得られます。
main() {
int e = 1;
int *k = &e;
int *l = k;
printf("(%p, %p)\n",k,l);
}