Pertimbangkan kod berikut:
<code class="cpp">#include <stdio.h> struct P2d { double x, y; P2d(double x, double y) : x(x), y(y) {} ~P2d() { printf("Destructor called\n"); } }; P2d center() { return P2d(10, 10); } int main(int argc, const char *argv[]) { const double& x = center().x; printf("x = %.18g\n", x); return 0; }</code>
Dalam contoh ini, center() mengembalikan objek P2d sementara. Timbul persoalan: apakah jangka hayat objek sementara ini?
Pengkompil yang berbeza mempamerkan tingkah laku yang berbeza:
Menurut piawaian C, mengikat rujukan kepada sub-objek sementara tidak memanjangkan hayat sementara . Walau bagaimanapun, ini dilindungi oleh CWG 1651, yang mencadangkan perubahan untuk memanjangkan hayat dalam kes sedemikian.
Status quo ialah hanya prvalues dianggap sebagai merujuk kepada sementara. Walau bagaimanapun, ungkapan akses ahli, seperti center().x, dianggap prvalues oleh kedua-dua g dan clang .
Resolusi yang akan datang akan menjelaskan bahawa ungkapan akses ahli menghasilkan ungkapan sementara dan bahawa rujukan kepada ungkapan ini memanjangkan hayat objek sementara yang sepadan.
Atas ialah kandungan terperinci ## Adakah Mengikat Rujukan Const kepada Sub-Objek Sementara Memanjangkan Jangka Hayatnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!