const专题提供const的最新资讯内容,帮你更好的了解const。
我惊讶地发现这段代码编译: #include <functional> struct Callable { void operator() () { count++; } void operator() () const = delete; int count = 0; }; int main() { const Callable counter; //
这个问题是关于嵌入式控制器. 我想在内存中初始化一个const数组.但是当我将这个数组存储在内存中时,我想将它存储在特定的位置,比如说0x8000.这样我想占用一些代码量,以便后者在运行时我可以删除它部分并将其用于我自己的其他目的. 基本上我想要这样做: const unsigned char dummy_string[] = "This is dummy string"; 但是dummy_str
我有关于’static const’成员初始化的问题.在模板化的类中,我定义了一个const成员并在类外部初始化它. 当我包含.h文件,其中该类在多个.cpp文件中实现时,我得到一个LNK2005错误(我正在使用VS2010),表示该常量已经定义. // List.hpp template <class T> class List { static const double TRIM_TH
在回复我对某些 answer in another question的评论时,有人建议像 void C::f() const { const_cast<C *>( this )->m_x = 1; } 因为修改了const对象,所以会调用未定义的行为.这是真的?如果不是,请引用C标准(请提及您引用的标准),以获得此标准. 对于它的价值,我总是使用这种方法来避免使一个成员变量可变,如果只需要一两
我理解const限定数据类型的行为.不过,我很好奇,如果合格变量的过度或不足的表现有任何性能增益或损失为常数.我特别想到在隔离的代码块中声明和使用的变量.例如,类似于: const qreal padding = CalculatePadding(); const QSizeF page_size = CalculatePagePreviewSize(padding); const QRectF
我想对标记为const的对象执行只读方法,但为了安全地执行此操作,我需要锁定一个reader-writer互斥锁: const Value Object::list() const { ScopedRead lock(children_); ... } 但这打破了因为编译器抱怨“children_”是const等等.我去了ScopedRead类,直到RWMutex类(children_是一
我想通过typedef const A B;将const添加到引用类型. 不知怎的,它不起作用.这在c中不可能吗? 测试: #include <type_traits> typedef int& A; typedef const A B; // <-- Add const // typedef std::add_const<A>::type B; // also doesn't work. s
我有一个字典,如下所示: typedef struct dictNode { int key; char *value; struct dictNode *next; } Dict; 和get()函数是这样的: char *get(const Dict *dict, int key) { if(!dict) return NULL; Dict *currP
我正在将结构转换为类,因此我可以为我的变量强制执行setter接口. 但是,我不想更改读取变量的所有实例. 所以我转换了这个: struct foo_t { int x; float y; }; 对此: class foo_t { int _x; float _y; public: foot_t() : x(_x), y(_y) { set(0, 0.0)
考虑下面的示例应用程序.它展示了我称之为有缺陷的类设计. #include <iostream> using namespace std; struct B { B() : m_value(1) {} long m_value; }; struct A { const B& GetB() const { return m_B; } void Foo(const B &b) {
#include <iostream> #include <sstream> class Vector { double _x; double _y; public: Vector(double x, double y) : _x(x), _y(y) {} double getX() { return _x; } double getY() { retur
有没有理由strcpy的签名是这样的: char *strcpy(char *dest, const char *src); 而不是这个? char *strcpy(char *const dest, const char *src); 据我所知,该函数永远不会改变指针. 我误解了应该使用的const指针吗?在我看来,当我写的函数接受一个不会被改变的指针(通过realloc等),然后我将它标记为一
在VC2012中我是一个奇怪的人我似乎无法弄清楚通过const引用将const指针传递给模板化参数的函数的语法,模板参数是非常量指针,即: template<typename T> struct Foo { void Add( const T& Bar ) { printf(Bar); } }; void main() { Foo<char*> foo; const char* name
我想为我的类实现一个Swap()方法(让我们称之为A)来创建copy-and-swap operator =().据我所知,交换方法应该通过交换类的所有成员来实现,例如: class A { public: void swap(A& rhv) { std::swap(x, rhv.x); std::swap(y, rhv.y);
嘿,我得到这个奇怪的错误: error C2663: ‘sf::Drawable::SetPosition’ : 2 overloads have no legal conversion for ‘this’ pointer 我认为它与const不匹配有关,但我不知道在哪里,或者为什么. 在下面的代码中,我有一个形状和精灵的向量,当尝试访问一个向量形状并调用其一个函数时,我得到错误. std::v
我有 this code的工作原理: #define MAX_PARAM_NAME_LEN 32 const char* GetName() { return "Test text"; } int main() { char name[MAX_PARAM_NAME_LEN]; strcpy(name, GetName()); cout << "resu
我一直在研究GNU Scientific Library的源代码,我一直看到以下类型的声明: double cblas_ddot (const int N, const double * x, const int incx, const double * y, const int incy) 在C99中,是否有任何(优化)好处来声明通过值传递的参数(例如,上例中的N或incy)const?无论如何
void * bsearch ( const void * key, const void * base, size_t num, size_t size, int ( * comparator ) ( const void *, const void * ) )
这编译: int* p1; const int* p2; p2 = p1; 这不是: vector<int*> v1; vector<const int*> v2; v2 = v1; // Error! v2 = static_cast<vector<const int*> >(v1); // Error! 嵌套常量指针的类型等价规则是什么?我认为转换将是隐含的.此外,除非我真的必须,否则我宁
memmove / memcpy / strcpy的原型中的第二个参数类似: 例如: void *memmove(void *dest, const void *src, size_t n); //const void* char *strcpy(char *dest, const char *src); //const char* 但是显然,如果dest和src重叠,那么src的内容会被改变,违