能够超载它是非常有用的.C++中的operator并返回对象的引用.
你可以超载operator->,operator*但不能operator.
这有技术原因吗?
我正在使用本机C++创建数据库访问层,我正在寻找支持NULL值的方法.这是我到目前为止:
class CNullValue
{
public:
static CNullValue Null()
{
static CNullValue nv;
return nv;
}
};
template<class T>
class CNullableT
{
public:
CNullableT(CNullValue &v) : m_Value(T()), m_IsNull(true)
{
}
CNullableT(T value) : m_Value(value), m_IsNull(false)
{
}
bool IsNull()
{
return m_IsNull;
}
T GetValue()
{
return m_Value;
}
private:
T m_Value;
bool m_IsNull;
};
Run Code Online (Sandbox Code Playgroud)
这就是我必须定义函数的方法:
void StoredProc(int i, CNullableT<int> j)
{
...connect to database
...if j.IsNull pass null to database etc
}
Run Code Online (Sandbox Code Playgroud)
我称之为:
sp.StoredProc(1, 2);
Run Code Online (Sandbox Code Playgroud)
要么
sp.StoredProc(3, CNullValue::Null());
Run Code Online (Sandbox Code Playgroud)
我只是想知道是否有比这更好的方法.特别是我不喜欢CNullValue的单例类对象和静态.我更愿意这样做
sp.StoredProc(3, …Run Code Online (Sandbox Code Playgroud)