Seumur Hidup Objek Sementara dalam C
Dalam C , objek sementara dicipta apabila ungkapan dinilai. Rujukan kepada objek sementara adalah sah sehingga akhir ungkapan penuhnya, iaitu ungkapan paling luar yang objek sementara bukan sebahagian daripada ungkapan lain. Ini membenarkan objek sementara digunakan sebagai argumen dalam panggilan fungsi dan dikembalikan daripada fungsi.
Pertimbangkan contoh berikut:
class StringBuffer { public: StringBuffer(std::string & str) : m_str(str) { m_buffer.push_back(0); } ~StringBuffer() { m_str = &m_buffer[0]; } char * Size(int maxlength) { m_buffer.resize(maxlength + 1, 0); return &m_buffer[0]; } private: std::string & m_str; std::vector<char> m_buffer; }; void GetString(char * str, int maxlength); std::string mystring; GetString(StringBuffer(mystring).Size(MAXLEN), MAXLEN);
Dalam contoh ini, objek StringBuffer sementara dibuat dan Saiznya () kaedah dipanggil untuk mendapatkan penunjuk kepada penimbal. Penunjuk ini kemudiannya dihantar ke fungsi GetString().
Hayat objek StringBuffer sementara dijamin sehingga akhir ungkapan penuh, iaitu panggilan ke GetString(). Oleh itu, pemusnah untuk objek sementara akan dipanggil selepas GetString() kembali. Tingkah laku ini konsisten tanpa mengira pengkompil yang digunakan.
Seumur hidup yang dijamin ini penting untuk templat ekspresi, yang bergantung pada fakta bahawa objek sementara akan kekal sah sehingga akhir ungkapan di mana ia dicipta.
Atas ialah kandungan terperinci Berapa Lama Objek Sementara Hidup dalam Ungkapan C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!