2017-04-16 206 views
1

我被檢查的C++ 11特性,看看下面的代碼:「const char(&a)[N]」是什麼意思?

class conststr { 
    const char* p; 
    std::size_t sz; 
public: 
    template<std::size_t N> 
    constexpr conststr(const char(&a)[N]): p(a), sz(N - 1) {} 
}; 

我知道const char a[],但我與const char(&a)[N]相當混亂,任何人都知道如何使用的?

+0

你知道關於*引用*的任何內容嗎? –

+0

這很有道理,謝謝! –

回答

1

這是一個const char大小爲N的數組的引用。這可能被用來接受一個字符串作爲參數。

conststr("whatever"); // ok 
char const * psz_whatever("whatever"); 
conststr(psz_whatever); // error 
+0

謝謝,你說得對。乍一看我並不認識。我想知道「const char * a」是否具有與「const char(&a)[N]」幾乎相同的功能。 –

+0

因此,在我的情況下,如果我使用「constexpr conststr(const char * a):p(a),sz(N - 1){}」,它將不起作用。是對的嗎? –

+0

'const char * a'幾乎相同,但它允許函數接受任何指針,包括'nullptr'。注意'conststr'是一個**模板**函數,所以我們推導出'N'。 – VTT