相关疑难解决方法(0)

main()真的是一个C++程序的开始吗?

C++标准中的$ 3.6.1/1节,

程序应包含一个名为main的全局函数,它是程序的指定开始.

现在考虑这段代码,

int square(int i) { return i*i; }
int user_main()
{ 
    for ( int i = 0 ; i < 10 ; ++i )
           std::cout << square(i) << endl;
    return 0;
}
int main_ret= user_main();
int main() 
{
        return main_ret;
}
Run Code Online (Sandbox Code Playgroud)

此示例代码执行我打算执行的操作,即进入main()应该是程序"开始" 的函数之前打印从0到9的整数平方.

我还用-pedantic选项GCC 4.5.0 编译它.它没有错误,甚至没有警告!

所以我的问题是,

这段代码真的符合标准吗?

如果它符合标准,那么它是否会使标准所说的无效?main()不是这个计划的开始!user_main()在执行之前执行main().

我知道要初始化全局变量main_ret,use_main()首先执行,但这是完全不同的事情; 关键是,它确实使标准中的引用语句$ 3.6.1/1无效,因为main() …

c++ program-entry-point standards-compliance entry-point

130
推荐指数
6
解决办法
2万
查看次数

什么是静态构造函数?

我在接受采访时问过这个问题:

什么是静态构造函数?

它存在于C++中吗?如果是,请举例说明.

c++

62
推荐指数
4
解决办法
5万
查看次数

为什么不能在c ++中将构造函数声明为static?

我最近读完了第一卷.Bruce Eckel在C++中的思考,现在转向将这些知识用于实际应用.

我最近使用静态成员函数并尝试使构造函数静态,编译器对此不满意.我检查了书中的原因但找不到任何原因.

有谁能解释为什么?

PS:在看到一些回复之后,我想提一下,由于我知道C#(和Java)允许构造函数被声明为静态,因此产生了混淆.

c++ oop static constructor

8
推荐指数
1
解决办法
5275
查看次数