gpt4 book ai didi

C++ - 符号+括号数组语法?

转载 作者:太空狗 更新时间:2023-10-29 20:54:52 25 4
gpt4 key购买 nike

<分区>

在此site ,他们给出了这个文字类的例子:

#include <iostream>
#include <stdexcept>

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) {}

constexpr char operator[](std::size_t n) const
{
return n < sz ? p[n] : throw std::out_of_range("");
}
constexpr std::size_t size() const { return sz; }
};

constexpr std::size_t countlower(conststr s, std::size_t n = 0,
std::size_t c = 0)
{
return n == s.size() ? c :
s[n] >= 'a' && s[n] <= 'z' ? countlower(s, n + 1, c + 1) :
countlower(s, n + 1, c);
}

// output function that requires a compile-time constant, for testing
template<int n>
struct constN
{
constN() { std::cout << n << '\n'; }
};

int main()
{
std::cout << "the number of lowercase letters in \"Hello, world!\" is ";
constN<countlower("Hello, world!")>(); // implicitly converted to conststr
}

程序输出结果

the number of lowercase letters in "Hello, world!" is 9

但是我不明白这个程序的一部分。即,此处的这一行:

constexpr conststr(const char(&a)[N]) : p(a), sz(N - 1) {}

const char(&a)[N],这个语法到底是什么意思?它有名字吗?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com