1. Почему следующий код не корректен?
class SomeType
{
public:
... constructors, and other methods
AnotherType& GetAnotherObject()
{
return another_object ? *another_object : NULL;
}
private:
AnotherType* another_object;
};
2. Почему так:
std::stringstream ss; int i = 100; ss << i;
можно, а так:
std::stringstream ss; int i = 100; i >> ss;
нельзя?
3. Почему этот код:
std::string GetSomeStr()
{
char some_str[20] = "Some string";
return some_str;
}
корректен. А этот:
char* GetAnotherStr()
{
char some_str[20] = "Some string";
return some_str;
}
нет?
4. Можно ли написать так:
bool some = true;
int a = 2, b = 1, c = 4, d = 5;
if (some ? a < b : c > d)
{ ... }
Можно ли написать эквивалентное выражение не используя тернарный оператор?
5. Будет ли что-нибудь напечатано?
int AllocBuf(char *buf, size_t size)
{
if (!(buf = (char*)malloc(size)))
return -1;
memset(buf, 0, size);
return 0;
}
void FreeBuf(char *buf)
{
if (buf)
free(buf);
}
void Foo()
{
char *buf = NULL;
if (AllocBuf(buf, 200) || !buf) return;
strcpy(buf, "Foo is here!\n");
printf(buf);
FreeBuf(buf);
}
6. Ошибочен ли этот код?
typedef std::vector<int> Values;
Values values;
values.push_back(1);
values.push_back(55);
...
for (Values::iterator it = values.begin(); it != values.end(); ++it)
if (*it > 40)
values.erase(it);
7. Имеет ли смысл это выражение:
SomeFooGet() = 123;
Что должна возвращать эта функция?