2017-04-16 11 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'は** template **関数なので、' N'を導き出します。 – VTT

関連する問題