题1
class Object {
public:
Object() { init(); }
virtual void init() {}
};
class GameObject : public Object {
public:
virtual void init() { m_TypeName = "GameObject"; }
std::string m_TypeName;
};
int main()
{
GameObject gameObject;
std::cout << "GameObject type name is " << gameObject.m_TypeName << std::endl;
return 0;
}
请问这段代码的运行结果为何? 产生这样结果的原因是? 如何修改能够使代码符合预期?
题2
float zero = 0, three = 3, four = 4;
class Complex
{
public:
float &x, &y;
Complex() : x(zero), y(zero) {}
Complex(float& z) : x(y), y(z) {}
Complex(float& _x, float& _y) : x(_x), y(_y) {}
};
float square(const float& x)
{
return x * x;
}
float absValue(Complex& c)
{
return sqrt(square(c.x) + square(c.y));
}
int main()
{
Complex c(four);
printf("absolute value is %g\n", absValue(c));
return 0;
}
请问这段代码的运行结果为何? 产生这样结果的原因是? 如何修正?
题3
某树形结构节点定义如下:
class Node
{
public:
const char* m_FriendlyName;
Node* m_ParentNode;
Node* m_LeftChildNode;
Node* m_RightChildNode;
};
void printNode(Node* p_Node)
{
if (p_Node != 0)
std::cout << "Node: " << p_Node->m_FriendlyName << std::endl;
}
请编写代码: 1, 通过调用printNode函数打印树结构的所有节点; 2, 按照层级顺序打印树结构的所有节点