On Wed, 29 Jul 2009 02:19:53 +0400, Steven Schveighoffer
<[email protected]> wrote:
Please respond to this poll before reading other responses.
Read the following function:
void foo(Box b)
{
if(b.xxx)
b.fill(5);
else
b.yyy;
}
Assuming you have no idea what type Box is, what of the following
options looks most natural for xxx in order to test to see if b has an
element in it?
a) if(b.empty)
b) if(b.empty())
c) if(b.clear)
d) if(b.clear())
Answer:
=============
a
=============
What would you guess looks most natural for yyy in order to remove all
elements from b?
a) b.empty;
b) b.empty();
c) b.clear;
d) b.clear();
Answer:
=============
d
=============
Which of the following functions looks incorrect?
void a(Box box)
{
if(box.empty())
box.fill(5);
else
box.clear();
}
void b(Box box)
{
if(box.empty)
box.fill(5);
else
box.clear;
}
void c(Box box)
{
if(box.clear)
box.fill(5);
else
box.empty;
}
void d(Box box)
{
if(box.clear())
box.fill(5);
else
box.empty();
}
Answer:
==============
a is fine (if empty is a property, why parens?), b is so-so (no parens
after b.clear)
c and d look incorrect because of the clear/empty swap
==============
You read the documentation for Box, and it looks like this:
/**
* check to see if a box is clear
*/
bool clear();
/**
* empty a box, returning true if the box had contents before emptying
*/
bool empty();
Now knowing what the actual meaning of clear and empty are, indicate
which version(s) of the function in the previous question would surprise
you if it compiled.
Here are the functions again for reference:
void a(Box box)
{
if(box.empty())
box.fill(5);
else
box.clear();
}
void b(Box box)
{
if(box.empty)
box.fill(5);
else
box.clear;
}
void c(Box box)
{
if(box.clear)
box.fill(5);
else
box.empty;
}
void d(Box box)
{
if(box.clear())
box.fill(5);
else
box.empty();
}
Answer:
==============
b, c
==============
Do you think the meaning of a symbol with parentheses suggests something
different than that same symbol without parentheses for the following
symbols:
a) select
b) rock
c) keyboard
d) elevate
Answer:
==============
==============