c++构造函数和计算字段
C++ constructors and computed fields
在c++中,构造函数必须使用初始化列表初始化const
变量。
如果构造函数需要计算这些字段的值该怎么办?比如通过数据库查找或简单计算。
工厂模式可以在这里应用,但它似乎有点沉重。我正在考虑像X::GetX(param1, param2)
这样的静态方法,它将计算值并调用私有构造函数。
是否有更好或更流行的模式可以在这里使用?
不需要调用私有构造函数,您可以直接从初始化列表调用静态方法(或者在某些情况下,甚至是非静态方法)。例如:
class testclass {
public:
testclass::testclass(int n): memberdata(fn(n)) { }
private:
int fn(int n) {
// Various calculations on 'n'
return 12;
}
int memberdata;
};
您可以在初始化器中调用静态函数,这些函数可以包含您喜欢的任何逻辑。
你可以在初始化列表中调用这个方法:
class A {
public:
A () : t_Const(X::Get(param1, param2)) { } // constructor can be public
const int t_Const; // this is your variable
};
为什么需要私有构造函数!
相关文章:
- 将结构字段的类型展开为可变模板参数
- 将位字段导出到数组
- 为了方便起见,我应该避免公开私有字段变量吗
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 在java中读取c++字节的位字段
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- 私有字段对象与私有继承?
- 声明没有默认构造函数的字段
- C++内存模型和位字段的最大序列
- 声明为无效的变量或字段'...' Ardunio 编译器上的错误
- 如何在QByteArray中放置和检索位字段而不会感到痛苦?
- C++ win32 如何使密码字段可选并启用复制和粘贴?
- 如何通过UDP接收QByteArray并将其解析为位字段结构?
- 仅匹配集合中的某些字段
- 结构字段名称与 GDB 中的 STL 数组冲突
- 如何使用位字段将数据从二进制文件复制到结构中?
- 如何从 IP 校验和字段中计算十六进制值
- DBGrid按计算字段排序
- 从 6 字节字段计算哈希
- c++构造函数和计算字段