您的位置:首页 > 娱乐 > 八卦 > 网络营销怎么做好推广_整合营销理论_最全bt搜索引擎入口_dy刷粉网站推广马上刷

网络营销怎么做好推广_整合营销理论_最全bt搜索引擎入口_dy刷粉网站推广马上刷

2025/5/1 14:20:40 来源:https://blog.csdn.net/qq_42961603/article/details/147262343  浏览:    关键词:网络营销怎么做好推广_整合营销理论_最全bt搜索引擎入口_dy刷粉网站推广马上刷
网络营销怎么做好推广_整合营销理论_最全bt搜索引擎入口_dy刷粉网站推广马上刷

在 C++ 中,constexpr 关键字用于声明常量表达式(即在编译时求值的表达式)。为了能被声明为 constexpr,变量必须具有字面量类型(literal type)或引用类型(reference type)。

字面量类型的要求

  1. 基本数据类型:如 int, char, bool, double 等基本类型是字面量类型。
  2. 枚举类型:枚举类型是字面量类型。
  3. 数组类型:如果元素类型是字面量类型,则数组是字面量类型。
  4. 类类型:类可以是字面量类型,但必须满足以下条件:
    1. 所有非静态数据成员都是字面量类型。
    2. 必须有一个 constexpr 构造函数。
    3. 析构函数是默认的或被删除的。
    4. 类不能是多态的(即不能有虚函数)。
    5. 类不能是联合体。

错误示例1

想要达到通过传入一个类型给GetStringGetString返回这个类型的字符串,尝试代码如下:

template <typename T>
stryct GetString;template <>
stryct GetString<int32_t>
static constexpr std::string value = "int32_t";

因为std::string不是字面类型,所以上述代码会报错:a constexpr variable must have a literal type or a reference type

错误示例2

class NonLiteralType {int value;
public:NonLiteralType(int v) : value(v) {}
};constexpr NonLiteralType obj(10);  // 错误:NonLiteralType 不是字面量类型

在这个例子中,NonLiteralType 不是字面量类型,因为它的构造函数不是 constexpr,尽管它的数据成员是字面量类型。

class LiteralType {int value;
public:constexpr LiteralType(int v) : value(v) {}constexpr int getValue() const { return value; }
};constexpr LiteralType obj(10);  // 正确:LiteralType 是字面量类型

在这个修改后的例子中,LiteralType 被正确地定义为字面量类型,因为它的构造函数和访问成员函数都是 constexpr,并且其数据成员是字面量类型。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com