gpt4 book ai didi

c++ - 如何删除多个构造函数中的重复检查

转载 作者:太空狗 更新时间:2023-10-29 23:53:04 25 4
gpt4 key购买 nike

我的类有几个构造函数:

MyClass();
MyClass( int param1 );
MyClass( int param1, int param2 );
MyClass( std::string otherParam );
MyClass( std::string otherParam, int param1 );
MyClass( std::string otherParam, int param1, int param2 );

现在,构造函数中需要进行一些参数检查,例如-3 < param1 < 3. 执行此检查的首选方法是什么?我应该从每个构造函数调用 checkParam1() 和 checkOtherParam() 吗?

最佳答案

在 C++11 中,您可以使用委托(delegate)构造函数功能:

With the delegating constructors feature, you can concentrate common initializations and post initializations in one constructor named target constructor. Delegating constructors can call the target constructor to do the initialization. A delegating constructor can also be used as the target constructor of one or more delegating constructors. You can use this feature to make programs more readable and maintainable.

MyClass( std::string otherParam, int param1, int param2 );

MyClass( std::string otherParam, int param1)
: MyClass(otherParam, param1, 456) {
}

参数较少的构造函数调用参数较多的构造函数,参数最多的构造函数完成所有检查。

请注意,您应该能够通过为 param1param2 添加默认值来统一最后三个构造函数,如下所示:

MyClass( std::string otherParam, int param1 = 123, int param2 = 456);

关于c++ - 如何删除多个构造函数中的重复检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12663556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com