有没有办法检查用户定义的类是否已初始化
Is there a way of checking if a user defined class is initialized or not?
考虑下面的类
class test;
class sample
{
sample() { }
~sample(){}
void SomeMethod();
private:
test t;
};
sample::SomeMethod(test &t1)
{
if(t.isuninitialized())
{
t = t1;
}
else
{
// Check if t and t1 member values are the same
}
}
main()
{
sample s;
test t1(a);
s.someMethod(t1);
}
有没有办法检查对象t是否初始化?在指针的情况下,检查对象是否为 NULL 就足够了。但是,在这种情况下,如果t不是指针,则可以进行这样的检查,或者我需要编写一个方法来检查成员变量值是否初始化为默认值
是的,事实上编译器可以为您检查这一点:如果代码编译,编译器能够生成调用 test
的默认构造函数的代码,而 ,而默认构造函数又负责创建对象 - 因此对象存在,并初始化为某种(可能是未知的,具体取决于test
默认构造函数的实现方式)状态。
相关文章:
- 是否可以初始化不可复制类型的成员变量(或基类)
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- 对象初始化中是否允许指向此成员的指针?
- 初始值设定项列表是否只接受使用相同类型的值初始化变量?
- 是否可以防止省略聚合初始化成员?
- 我们是否需要为 C++ 中的多个函数初始化多个模板?
- 为什么需要检查 GLAD 或 GLEW 是否正确初始化?
- C++:带有大括号初始化列表的函数调用表达式 - 标准是否规定在单个元素列表的微不足道的情况下忽略大括号?
- 是否可以使用右值初始化数据成员?
- 当 map 是一个整数数组并且由 operator[] 创建时,它是否初始化其映射类型
- C++,检查当我无法使用 NULL/0 时是否初始化了变量
- make_unique值是否初始化字符数组
- new[] 是否初始化内置数组
- 此零是否初始化数据项
- 检查变量是否初始化
- 是否初始化基元-c++
- std::map 中基元类型的值是否初始化
- Windows 的线程本地存储是否初始化值?
- 不管是否初始化,使用sizeof(p[0])真的无害吗?