2013-03-29 51 views
1

我在看一些示例代碼,並不能制定出什麼樣以下行正在做的:C++/C - 奇碼

fcgi_streambuf cin_fcgi_streambuf(request.in); 
    fcgi_streambuf cout_fcgi_streambuf(request.out); 
    fcgi_streambuf cerr_fcgi_streambuf(request.err); 

我不來自AC背景所以,語法看上去有些奇怪 - 每行正在調用一個函數來初始化一個新的對象,但我期望至少有一個任務在那裏。例如:

fcgi_streambuf = cin_fcgi_streambuf(request.in); 
    fcgi_streambuf = cout_fcgi_streambuf(request.out); 
    fcgi_streambuf = cerr_fcgi_streambuf(request.err); 

完整示例代碼可以在這裏找到:http://chriswu.me/blog/writing-hello-world-in-fcgi-with-c-plus-plus/

+1

你可能會感到困惑,因爲它們不是函數,而是構造函數,它們相似但不完全相同。這裏有相同的語法:'int x(0);' – ApproachingDarknessFish

回答

6

否,每一行是定義的變量。

fcgi_streambuf cin_fcgi_streambuf(request.in); 
// ^-type-------^ ^-name-----------^ ^-params-^ 

當參數傳遞給fcgi_streambuf類的構造函數。 雖然不是100%準確,它可能會幫助到這樣設想一下:

fcgi_streambuf cin_fcgi_streambuf = fcgi_streambuf(request.in); 
3

,這些行聲明fcgi_streambuf類型的三個變量,並呼籲該類型的構造。