在一次采访中,我遇到了一个问题:
您的朋友给了您一个源代码文件,该文件在控制台上打印斐波那契数字.请注意,main()块为空,并且其中没有任何语句.
解释这是如何可能的(提示:全局实例!)
我真的想知道这个,这样的事情怎么可能!
Naw*_*waz 127
它很可能被实现为(或其变体):
void print_fibs()
{
//implementation
}
int ignore = (print_fibs(), 0);
int main() {}
Run Code Online (Sandbox Code Playgroud)
在此代码中,ignore必须在进入main()函数之前初始化全局变量.现在,为了初始化全局,print_fibs()需要在可以执行任何操作的地方执行 - 在这种情况下,计算斐波纳契数字并打印它们!我在下面的问题中已经表现出类似的事情(我曾经问过很久):
请注意,此类代码不安全,一般应最好避免使用.例如,执行std::cout时可能无法初始化对象print_fibs(),如果是,那么std::cout函数中会做什么?但是,如果在其他情况下,它不依赖于这样的初始化顺序,那么调用初始化函数是安全的(这是C和C++中的常见做法).
Sak*_*ham 18
希望这可以帮助
class cls
{
public:
cls()
{
// Your code for fibonacci series
}
} objCls;
int main()
{
}
Run Code Online (Sandbox Code Playgroud)
因此,只要声明了类的全局变量,就会调用构造函数并在那里添加逻辑以打印出Fibonacci系列.
对的,这是可能的.您需要声明一个对象的全局实例,该对象计算对象构造函数中的Fibonacci数.
| 归档时间: |
|
| 查看次数: |
3715 次 |
| 最近记录: |