Zero initialization คือการตั้งค่าเริ่มต้นของออบเจ็กต์ใน C++ เป็นศูนย์
ไวยากรณ์
T{} ; char array[n] = "";
สถานการณ์ที่มีการทำ zero initialization ได้แก่:
ตัวแปรที่มีชื่อพร้อม static หรือ thread-local storage จะถูกเริ่มต้นเป็นศูนย์
ใช้เป็นการเริ่มต้นค่าสำหรับ non-class types และสมาชิกของคลาสที่ไม่มี constructor
ใช้เริ่มต้น character array เมื่อความยาวมากกว่าจำนวนตัวอักษรที่จะกำหนด
จุดที่ต้องจดจำ
บางประเภทของตัวแปร เช่น static variables และ thread-local variables จะถูกเริ่มต้นเป็นศูนย์ก่อน แล้วค่อย reinitialize เป็นค่าอื่นเมื่อถูกเรียกใช้
Pointer ที่ถูก zero-initialized จะเรียกว่า null pointer
ตัวอย่าง
โปรแกรมแสดงการนำ zero initialization ไปใช้งานใน C++:
#include <iostream>
#include <string>
using namespace std;
struct zeroInitialization {
int x, y, z;
};
float f[3];
int* p;
string s;
int main(int argc, char* argv[]) {
zeroInitialization obj = zeroInitialization();
cout << "Zero initialized object variable :\t";
cout << obj.x << "\t" << obj.y << "\t" << obj.z << "\n";
cout << "Zero initialized float value :\t";
cout << f[0] << "\t" << f[1] << "\t" << f[2] << "\n";
cout << "Zero initialized pointer value :\t";
cout << p << "\n";
return 0;
}
ผลลัพธ์
Zero initialized object variable : 0 0 0 Zero initialized float value : 0 0 0 Zero initialized pointer value : 0