constexpr int size = 10; size可以用在需要编译时就能确定的代码中: #include <iostream> #include <array> int main(void) { constexpr int size = 10; std::array<int, size> arr{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}; for(const auto i : arr) { std::cout << i << ' '; } } ...
const int size = i; int arr[size]; //error,size不是常量表达式,不能在编译期确定 而如果size是一个constexpr变量,则符合编译期确定的条件,可以通过编译。 constexpr auto size = 10; int arr[size]; //OK,size时常量表达式 当然,要定义一个常量表达式的时候,也要确保其右侧是常量表达式,否则该处便无法...
char str[]="Hello"; char* p = str; int n = 10; void* q = malloc(100); sizeof(str)= ___; //str表示数组,得到结果是数组占用内存的总空间,注意数组最后有一个元素保存字符串结束符,6 sizeof(p)= ___; //指针变量,4 sizeof(n)= ___; //int形变量,4 sizeof(q)= ___; //指向...
// constant_member_function.cppclassDate{public: Date(intmn,intdy,intyr );intgetMonth()const;// A read-only functionvoidsetMonth(intmn );// A write function; can't be constprivate:intmonth; };intDate::getMonth()const{returnmonth;// Doesn't modify anything}voidDate::setMonth(intmn )...
int main(){ const int a = 10;int* pa = &a;//虽然说对a进行了限制,但是此处绕过了a,去修改值 *pa = 0;//虽然达到了效果,但是操作有点不合理 printf("%d\n", a);return 0;} 问:被const修饰后,变量是否变成了常量?答:并不是 Plain Text 复制代码 9 1 2 3 4 5 6 7 int main(...
classTest{public:Test():a(0){}enum{size1=100,size2=200};private:constinta;//只能在构造函数初始化列表中初始化staticintb;//在类的实现文件中定义并初始化conststaticintc;//与 static const int c;相同。};intTest::b=0;//static成员变量不能在构造函数初始化列表中初始化,因为它不属于某个对象。
例如:const int a = 10; 2.函数参数的const限定符: 在函数的参数列表中,对某个参数使用const限定符,表示该参数是只读的,函数内部不可以修改该参数的值。 例如:void func(const int a); 3.函数返回值的const限定符: 在函数声明时,在函数返回类型前面添加const关键字,表示返回值是常量,不可被修改。
cout 和 cin。 而你再定义 size 也不会有问题(库中的 size 还在 std 中,不会和这个冲突)。
constexpr int max_array_size = 100; // 编译时已知的数组大小 constexpr double computeArea(double radius) { return 3.14159 * radius * radius; // 编译时计算面积的函数 } 在实际编程中,选择 const 还是constexpr 取决于你的具体需求,尤其是是否需要编译时的常量表达式。 参考:追梦小公子:C/C++笔记编...
std::vector<int>Vec;conststd::vector<int>::iteratorIter=Vec.begin();//const放在迭代器类型的前面,相当于T* const*Iter=10;//正确,T* const能修改指向变量的值++Iter;//错误!!!T* const不能指向其他地址std::vector<int>::const_iteratorConstIter=Vec.cbegin();//const_iterator相当于const T**Con...