C++11 若不允许异常处理,若发现传递的参数错误,如何停止类的对象构造?
这里传递给day的值(100)是不正确的,我的问题是如何在构造函数中检查“day”参数以防止创建对象。C++11 若不允许异常处理,若发现传递的参数错误,如何停止类的对象构造?,c++11,C++11,这里传递给day的值(100)是不正确的,我的问题是如何在构造函数中检查“day”参数以防止创建对象。 请注意,一旦我和软件工程师们谈过,不允许异常处理, ,他们已经开发了C++的ECOS项目,没有编译器支持的C++异常。因此,他们没有在构造函数中使用抛出异常 他们的方法是使用这样的简单构造函数 class Date { Date(int day, int month, int year) { } } int main() { Date d = Date(100, 2,
请注意,一旦我和软件工程师们谈过,不允许异常处理, ,他们已经开发了C++的ECOS项目,没有编译器支持的C++异常。因此,他们没有在构造函数中使用抛出异常 他们的方法是使用这样的简单构造函数
class Date
{
Date(int day, int month, int year) { }
}
int main()
{
Date d = Date(100, 2, 1990);
}
然后始终使用init
函数:
Date::Date()
:
initialized_ (false)
{}
<>他们总是检查<代码>的结果>(代码)>函数> ,我曾经和一直在开发ECOS C++软件项目的软件工程师交谈过,没有编译器支持的C++异常。因此,他们没有在构造函数中使用抛出异常 他们的方法是使用这样的简单构造函数
class Date
{
Date(int day, int month, int year) { }
}
int main()
{
Date d = Date(100, 2, 1990);
}
然后始终使用init
函数:
Date::Date()
:
initialized_ (false)
{}
他们总是检查<代码>()/<代码>函数的结果。
< P>一个经常被反对的现代C++编程技术,如RAII的一个论点是,它们在例外情况下不能被使用,因为异常是唯一的方式来指示构造函数的失败。这是绝对正确的 处理不允许异常的环境的唯一方法是从构造函数中取出初始化。在一个成员函数或其他什么中进行请记住:没有例外的环境不是真的C++。你必须对它们进行更像C类的处理。 < P>一种经常被反对的现代C++编程技术(如RAII)的论点是,它们在例外情况下不能被使用,因为异常是唯一的方式来指示构造函数的失败。这是绝对正确的 处理不允许异常的环境的唯一方法是从构造函数中取出初始化。在一个成员函数或其他什么中进行
请记住:没有例外的环境不是真的C++。您必须更像对待C-with-classes一样对待它们。为什么不允许异常处理?这似乎是做类似事情的最佳方式…@thomson_matt:为什么不允许例外重要吗?有些平台不是这样的;推理与回答他的问题无关。是的,这很糟糕,但他在问如何处理恶劣的环境。为什么不允许异常处理?这似乎是做类似事情的最佳方式…@thomson_matt:为什么不允许例外重要吗?有些平台不是这样的;推理与回答他的问题无关。是的,这很糟糕,但他在问如何处理恶劣的环境。这似乎没问题,但是否可以为类成员指定一个默认值。与初始化值(false)类似,它似乎可以,但是否可以为类成员指定默认值。类似于(false)