我来自C++世界,我找不到以下的Java替代方案(如果有的话):
struct SomeStruct
{
SomeStruct(){}
SomeStruct(const SomeStruct& rhs)
{
*this = rhs;
}
};
Run Code Online (Sandbox Code Playgroud)
我需要这个的原因是我有一个现有对象的缓存,所以我不想创建另一个实例,只是为了'克隆'现有的实例,如下所示:
public class SomeObject
{
private static Hashtable _objects;
SomeObject()
{
SomeObject obj = _objects.get(some_key);
if (obj != null) {
// *this = obj;
// instead of:
// this.something = obj.something;
// this.something1 = obj.something1;
// this.something2 = obj.something2;
// a zillion fields....
}
}
};
Run Code Online (Sandbox Code Playgroud)
编辑:
对不起,我混淆了一些事情(仍然需要学习Java和C++).
谢谢
以下是否会产生未定义的行为:
void * something = NULL;
char * buffer = new char[10];
something = buffer;
buffer = NULL;
delete [] something; // undefined??
Run Code Online (Sandbox Code Playgroud)
我首先需要投something来char *?
请考虑以下代码:
1.
uint16 a = 0x0001;
if(a < 0x0002)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
2.
uint16 a = 0x0001;
if(a < uint16(0x0002))
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
3.
uint16 a = 0x0001;
if(a < static_cast<uint16>(0x0002))
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
4.
uint16 a = 0x0001;
uint16 b = 0x0002;
if(a < b)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
backgorund中的编译器做了什么以及上面测试的最佳(和正确)方法是什么?
抱歉,但我找不到更好的标题:)
编辑:
值0x0001和0x0002仅是示例.可以改为任何2字节值.
先感谢您!
在以下代码中:
using namespace std;
//ostream& operator<< (ostream& out,const string & str)
//{
// out << str.c_str();
// return out;
//}
int _tmain(int argc, _TCHAR* argv[])
{
ofstream file("file.out");
vector<string> test(2);
test[0] = "str1";
test[1] = "str2";
ostream_iterator<string> sIt(file);
copy(test.begin(), test.end(), sIt);
file.close();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
什么是重载的正确方法operator <<,使
copy(test.begin(), test.end(), sIt);工作.
我错过了什么?
编辑:我只是愚蠢......忘了包含"字符串"标题
谢谢!