首页 文章
  • 4 votes
     answers
     views

    使用volatile关键字修改const变量

    我正在回答question并制作了这个测试程序 . #include <stdio.h> int main() { volatile const int v = 5; int * a = &v; *a =4; printf("%d\n", v); return 0; } 如果没有volatile关键字,代码将优化(使...
  • 387 votes
     answers
     views

    静态常量字符串(类成员)

    我想为一个类(在这种情况下是一个形状工厂)有一个私有静态常量 . 我想要有类似的东西 . class A { private: static const string RECTANGLE = "rectangle"; } 不幸的是,我从C(g)编译器中得到了各种错误,例如: ISO C禁止成员'RECTANGLE'的初始化非整数类型'std :: stri...
  • 7 votes
     answers
     views

    如何使用公共const迭代器和私有非const迭代器提供类似于stl的容器?

    我有一个包含std :: list的类,并且希望为const_iterator提供public begin()和end(),为plain iterator提供private begin()和end() . 但是,编译器看到私有版本并抱怨它是私有的而不是使用公共const版本 . 我理解C不会在返回类型(在本例中为const_iterator和iterator)上重载,因此它选择非const版本,因...
  • 0 votes
     answers
     views

    Arduino内存 - 静态

    我对arduino记忆几乎没有疑问 . 将全局变量(单个int)与PROGMEM一起移动到闪存中是否有意义,还是为我编译器?或者我应该声明全局变量“#define”而不是“static const int xy = ...” 循环函数中的静态变量示例: void loop(){static unsigned short Array [] = {Global_Variable_1,Glo...
  • 136 votes
     answers
     views

    常量指针与常量值上的指针[重复]

    这个问题在这里已有答案: What is the difference between char * const and const char *? 18个答案 以下声明之间有什么区别? char * const a; const char * a; 为了理解我写这个小程序的区别: #include <stdio.h> #include <stdlib.h> in...
  • 617 votes
     answers
     views

    'const' last在类的函数声明中的含义?

    const 在这些声明中的含义是什么? const 让我困惑 . class foobar { public: operator int () const; const char* foo() const; };
  • 71 votes
     answers
     views

    C const map元素访问

    我试图使用operator []访问const C map中的元素,但是这个方法失败了 . 我也尝试用“at()”来做同样的事情 . 这次工作 . 但是,我找不到任何关于使用“at()”来访问const C map中的元素的引用 . “at()”是C Map 中新添加的功能吗?我在哪里可以找到更多关于此的信息?非常感谢你! 一个例子可能如下: #include <iostream> ...
  • 427 votes
     answers
     views

    `constexpr`和`const`之间的区别

    constexpr 和 const 之间有什么区别? 我什么时候才能只使用其中一个? 我何时可以同时使用两者?如何选择?
  • 9 votes
     answers
     views

    隐式实例化未定义模板'class'

    当我试图在我的库中为const和非const模板参数提供函数时,我遇到了一个奇怪的问题 . 以下源代码是一个最小的示例现象: #include <iostream> template<typename some_type> struct some_meta_class; template<> struct some_meta_class<int&gt...
  • 205 votes
     answers
     views

    是否在ES6中使用let或const声明变量?

    我已经玩了ES6一段时间了,我注意到虽然用 var 声明的变量按预期被提升了...... console.log(typeof name); // undefined var name = "John"; ...用 let 或 const 声明的变量似乎在提升方面存在一些问题: console.log(typeof name); // ReferenceError let n...
  • -3 votes
     answers
     views

    cpp-如何用const int decalare和实现函数[关闭]

    我尝试以下列方式实施基础 class 的学生: class Student { public: Student(std::string name_ , int const id_); virtual ~Student(); void addGrade(int const grade2add); void print(); ...
  • 347 votes
     answers
     views

    常量的C#命名约定?

    private const int THE_ANSWER = 42; 要么 private const int theAnswer = 42; 我个人认为在现代IDE中我们应该使用camelCase,因为ALL_CAPS看起来很奇怪 . 你怎么看?
  • 18 votes
     answers
     views

    Dart中''const' ' and ' 'final''关键字有什么区别?

    Dart语言中 const 和 final 关键字有什么区别? 这让我很困惑 .
  • 10 votes
     answers
     views

    将char赋值给int引用和C中的const int引用

    我注意到将 char 分配给 const int& 编译,但将其分配给 int& 会产生编译错误 . char c; int& x = c; // this fails to compile const int& y = c; // this is ok 我知道这样做不是一个好习惯,但我很想知道它发生的原因 . 我通过寻找"assigning...
  • 582 votes
     answers
     views

    define()vs const

    非常简单的问题:在PHP中,你什么时候使用 define('FOO', 1); 你什么时候用的 const FOO = 1; 这两者之间的主要区别是什么?
  • 0 votes
     answers
     views

    如何定义子类使用的常量?

    我需要定义一些将由基类及其子类使用的常量 . 不确定定义它们的正确方法是什么 . 我理解const,readonly,static const以及public,protected和private之间的区别(虽然我很少看到C#中使用了“protected”) . 应该如何定义这些常量?它们应该是公共const,公共只读,私有常量还是私有只读,并使用公共getter / setter来使用子类,还是应...
  • 7 votes
     answers
     views

    const_cast vs reinterpret_cast

    参考SO C FAQ When should static_cast, dynamic_cast and reinterpret_cast be used? . const_cast用于删除或添加const到变量,它是唯一可靠,定义和合法的方法来删除constness . reinterpret_cast用于更改类型的解释 . 我理解为什么一个const变量应该只使用const_cast转换为非...
  • 3 votes
     answers
     views

    为什么rvalue引用参数与重载决策中的const引用匹配?

    潜在相关文章: Overload resolution between object, rvalue reference, const reference std::begin and R-values 对于STL容器 C , std::begin(C) 和类似的访问函数(包括 std::data(C) (因为C 17))应该具有 C::begin() 和其他对应的 C 方法的相同行为...
  • 7 votes
     answers
     views

    模板化类中的静态const成员初始化

    我有一个关于'static const'成员初始化的问题 . 在模板化类中,我定义了一个const成员并在类外部初始化它 .当我包含.h文件,其中该类在多个.cpp文件中实现时,我得到一个 LNK2005 error (I'm using VS2010) that says the constant is already defined . // List.hpp template <cl...
  • 6 votes
     answers
     views

    C - 通过const声明访问非const

    是否通过C标准允许的 const 声明访问非 const 对象?例如 . 以下代码保证在符合标准的平台上编译和输出23和42? 翻译单位A: int a = 23; void foo(void) { a = 42; } 翻译单位B: #include <stdio.h> extern volatile const int a; void foo(void); int main(v...
  • 1 votes
     answers
     views

    从const到非const的转储堆存储是否会调用未定义的行为?

    标准说: (6.7.3)如果尝试通过使用具有非const限定类型的左值来修改使用const限定类型定义的对象,则行为未定义 . 在未定义的行为部分: 尝试通过使用具有非const限定类型的左值来修改使用const限定类型定义的对象(6.7.3) malloc 的返回值是 uninitialized storage 的块 . 在该存储中没有构建 object . 那就是说,下面的代码合法吗...
  • 142 votes
     answers
     views

    常量指针有什么意义?

    我不是在讨论指向const值的指针,而是指向const指针本身 . 我正在学习C和C,超越了基本的东西,直到今天我才意识到指针是通过值传递给函数的,这是有道理的 . 这意味着在函数内部,我可以使复制的指针指向其他值,而不会影响来自调用者的原始指针 . 那么有一个函数头是什么意思: void foo(int* const ptr); 在这样的函数里面你不能让ptr指向别的东西因为它是const并且...
  • 2 votes
     answers
     views

    什么是基于堆栈的参考?

    什么是基于堆栈的引用?它们与作为对象成员的引用有何不同?标准是否谈到这些? 我在Herb Sutter写的_2547026中遇到过这个: Q1:以下代码是否合法C? // Example 1 string f() { return "abc"; } void g() { const string& s = f(); cout << s <&...
  • 5 votes
     answers
     views

    GCC优化纯函数

    我对GCC关于优化 pure 函数(来自online docs)的保证感到困惑: 纯净除返回值外,许多函数都没有效果,它们的返回值仅取决于参数和/或全局变量 . (...)有趣的非纯函数是具有无限循环的函数或者取决于易失性存储器或其他系统资源的函数,它们可以在两个连续调用(例如多线程环境中的feof)之间改变 . 对于 const : const许多函数不检查除参数之外的任何值,除了返回值...
  • 187 votes
     answers
     views

    static const vs #define

    使用 static const vars比 #define 预处理器更好吗?或者也许取决于背景? 每种方法的优点/缺点是什么?
  • 24 votes
     answers
     views

    为什么std :: is_const :: value 'false'即使T的value_type是const?

    #include <type_traits> struct foo; int main() { const foo *bar; static_assert(std::is_const<decltype(*bar)>::value, "expected const but this is non-const!&...
  • 7 votes
     answers
     views

    您是否可以将C RValue参考参数标记为const

    我一直在切换模板工厂函数来使用(和理解)std :: forward来支持rvalues和移动语义 . 我通常用于模板类的样板工厂函数始终将参数标记为const: #include <iostream> #include <utility> template<typename T, typename U> struct MyPair{ MyPair(c...
  • 11 votes
     answers
     views

    包含常量成员的POD结构

    使用此代码: struct A { int i; const int b; }; // The union is to verify that A is a type that can be used in a union. union U { A a; int b; }; int main() { U a = {1, 1}; U b = {2,...
  • 6 votes
     answers
     views

    修改常量对象

    我正在通过面试问题向初级C开发人员的职位进行调查 . 问题是(引用): 以下代码是否正确? struct Foo { int i; void foo ( void ) const { Foo* pointer = const_cast<Foo*>(this); pointer->i = 0; } }; 我会回答...
  • 18 votes
     answers
     views

    为什么Visual C会在C中警告从const void **到void *的隐式转换,而不是在C中?

    摘要 当C程序尝试将指针转换为 const 数据(如 const void ** 或 const char ** )指向 void * 时,Microsoft Visual Studio中的C / C编译器会发出警告C4090(即使这样的类型实际上不是指向 const 的指针) . 更奇怪的是,同一个编译器默默地接受编译为C的相同代码 . 这种不一致的原因是什么,为什么Visual Studio(...

热门问题