请教C++结构体中using std::runtime_error::runtime_error语句的作用
关于
using std::runtime_error::runtime_error;的作用解释 这条语句的核心作用是让子类invalid_assignment直接复用父类std::runtime_error的所有构造函数,具体细节如下:
std::runtime_error本身提供了多个构造版本(比如接受const char*字符串、const std::string&字符串的构造函数),但C中子类默认不会自动继承父类的构造函数(C11后若子类无自定义构造函数会隐式继承,但只要子类有自定义构造函数,这种隐式继承就会失效)。- 加上这条
using声明后,父类的所有构造函数都会被引入到子类的作用域中,你可以直接用父类的构造方式创建子类对象,比如:throw invalid_assignment("赋值操作无效"); - 如果没有这条语句,你要么得手动在子类里写一堆构造函数,把参数转发给父类(代码冗余),要么在有自定义构造函数的场景下,无法直接使用父类的构造逻辑。
简单来说,这行代码是为了减少重复代码,让自定义异常类的构造方式和标准异常保持一致,使用起来更便捷。
内容的提问来源于stack exchange,提问作者awwd
相关产品推荐
相关产品推荐

