auto get_size = [](int i) constexpr -> int { return i * 2; }; char buffer2[get_size(5)] = { 0 }; auto get_count = []() constexpr -> int { static int x = 5; // 编译失败,x是一个static变量 return x; }; int a2 = get_count(); 参考: 现代C++语言核心特性解析 C++17...
constexpr Student(const char* name, int age) : name_(name), age_(age) {} void print() const { cout << name_ << ' ' << age_ << '\\n'; } private: const char* name_; int age_; }; void test() { constexpr Student s{"zhangsan", 18}; s.print(); } 总结 const可以修饰...
const 修饰变量,表示该变量不能被修改。 1、const char *p 表示指针p指向的内容不能改变 2、char * const p,就是将p声明为常指针,它的地址不能改变。 const char* p0 = "aaaa"; const char* p1 = "abcd";// 表示指针p指向的内容不能改变 但是p指向的位置是可以变得 p1 = p0; cout << p1 << "...
// error: 'std::__cxx11::basic_string<char>{std::__cxx11::basic_string<char>::_Alloc_hider{((char*)(& c.std::__cxx11::basic_string<char>::<anonymous>.std::__cxx11::basic_string<char>::<unnamed union>::_M_local_buf))}, 8, std::__cxx11::basic_string<char>::<unnamed...
#include <iostream> using namespace std; //自定义类型的定义 constexpr struct myType { const char* name; int age; //其它结构体成员 }; int main() { constexpr struct myType mt{ "zhangsan", 10 }; cout << mt.name << " " << mt.age << endl; return 0; } 此程序是无法通过编译的...
定义一个指向字符常量的指针,这里,ptr是一个指向 char* 类型的常量,所以不能用ptr来修改所指向的...
constexpr char *msg = "Hello, world!"; int main() { for (auto i = 0; i < n; ++i) { std::cout << msg << std::endl; } } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. constexpr应该是大家很熟悉的东西了,也是最常用的c++11新特性之一。和宏相比除了更强的类型安全之外,constex...
定义一个指向字符常量的指针,这里,ptr是一个指向 char* 类型的常量,所以不能用ptr来修改所指向的...
我在编译时有一个由 char 数组表示的以逗号分隔的字段列表: constexpr static char arrayStr[] = "a,b,c"; 我想在“,”上拆分,并在编译时获得可用的元素数量。伪代码: constexpr static size_t numFields = SPLIT(arrayStr, ","); 将返回 3。
constchar*p1;charconst*p2;char*constp3;constchar*constp4; 虽然看起来很像,容易混,记信秘决,这种直接从右向左读就一招制敌。 p1是一个指针,指向char字符常量,表示p1所指对象内容不可以改,所指地址可以改。 p2同p1,写法不同,是一个指针,指向char字符常量,表示p2所指对象内容不可以改,所指地址可以改。