use*_*352 1 c++ standards pointers initialization unsafe-pointers
class someClass
{
public:
int* ptr2Int;
};
Run Code Online (Sandbox Code Playgroud)
Is this a valid class (yes it compiles)? Provided one assigns a value to ptr2Int before dereferencing it, is the class guaranteed to work as one would expect?
类中的未初始化指针与独立的未初始化指针没有任何区别.只要你没有以任何危险的方式使用指针,你就没事了.
请记住,使用未初始化指针的"危险方式"包括仅仅尝试读取其值(不需要解除引用).如果在为指针指定有效值之前使用这些隐式成员函数,则类中存在的隐式编译器提供的复制构造函数和复制赋值运算符可能会执行此类尝试.
实际上,如果我没有弄错的话,这个问题就是标准化委员会层面的一些讨论问题.是否允许隐式生成的成员函数跳过可能存在于类的非初始化成员中的陷阱表示?我不记得判决结果是什么.(或许我在C99的背景下看到了这个讨论?)