Tag: 常量

C ++地图访问丢弃限定符(const)

下面的代码说,将const作为const传递给operator[]方法会抛弃限定符: #include <iostream> #include <map> #include <string> using namespace std; class MapWrapper { public: const int &get_value(const int &key) const { return _map[key]; } private: map<int, int> _map; }; int main() { MapWrapper mw; cout << mw.get_value(42) << endl; return 0; } 这是因为地图访问中可能发生的分配? 没有函数的地图访问被声明为const? MapWrapper.cpp:10: error: passing 'const std::map<int, int, std::less<int>, std::allocator<std::pair<const int, int> > […]

界面常数的优点和缺点

PHP接口允许在接口中定义常量,例如 interface FooBar { const FOO = 1; const BAR = 2; } echo FooBar::FOO; // 1 任何实现类将自动具有这些常量,例如 class MyFooBar implement FooBar { } echo MyFooBar::FOO; // 1 我自己的看法是,全球化是邪恶的 。 但是我想知道是否同样适用于接口常量。 鉴于对接口进行编码通常被认为是很好的做法,使用接口常量是唯一可以在类上下文之外使用的常量吗? 虽然我很好奇听到你的个人意见,而不pipe你是否使用接口常量,我主要是在你的答案中寻找客观的原因。 我不希望这是一个民意调查types的问题。 我对使用接口常量对可维护性有什么影响感兴趣。 耦合。 或者unit testing。 它与SOLID PHP有什么关系? 它是否违反在PHP中被认为是良好实践的任何编码原则? 你明白了 注意: 对于Java也有一个类似的问题 ,列出了一些很不好的理由,因为它们是错误的实践,但是由于Java不是PHP,所以我觉得在PHP标签中再次提出这个问题是合理的。

如何在JavaScript中声明string常量?

我想在JavaScript中声明string常量。 有没有办法做到这一点?

在C#中创build一个常量字典

什么是最有效的方法来创build一个常量 (永远不会在运行时更改) string映射到int s? 我试过使用一个常量字典 ,但没有解决。 我可以用适当的语义实现一个不可变的包装器 ,但是这看起来还不完全正确。 对于那些有问题的人,我在一个生成的类中实现了IDataErrorInfo,并且正在寻找一种方法将columnName查find我的描述符数组中。 我没有意识到(testing时错字!)哦,开关接受string,所以这就是我要使用的。 谢谢!

C ++ STL中的const_iterator和非const迭代器有什么区别?

const_iterator和iterator之间有什么区别,你会在哪里使用它们?

C ++在哪里初始化静态常量

我有一堂课 class foo { public: foo(); foo( int ); private: static const string s; }; 哪里是在源文件中初始化strings的最佳位置?

访问一个类的常量variables

当我有 class Foo CONSTANT_NAME = ["a", "b", "c"] … end 有没有办法访问Foo::CONSTANT_NAME还是必须创build一个类方法来访问该值?

我如何可移植地调用一些C ++函数,在某些平台上使用char **,而在其他平台上使用const char **?

在我的Linux(和OS X)机器上, iconv()函数具有这个原型: size_t iconv (iconv_t, char **inbuf… 而在FreeBSD上看起来像这样: size_t iconv (iconv_t, const char **inbuf… 我想我的C ++代码在两个平台上构build。 使用C编译器,传递char**作为const char**参数(反之亦然)通常会发出纯粹的警告; 然而在C ++中这是一个致命的错误。 所以如果我传递一个char** ,它将不会在BSD上编译,如果我传递一个const char** ,它将不能在Linux / OS X上编译。我怎样才能编写在两个编译的代码,而不诉诸试图检测平台? 我有一个(失败的)想法是提供一个本地原型来覆盖头部提供的任何东西: void myfunc(void) { size_t iconv (iconv_t, char **inbuf); iconv(foo, ptr); } 这样做是因为iconv需要C链接,并且你不能在一个函数中放置extern "C" (为什么不呢?) 我想到的最好的工作思路是投射函数指针本身: typedef void (*func_t)(iconv_t, const char **); ((func_t)(iconv))(foo, ptr); 但这有可能掩盖其他更严重的错误。

如何select多行填充常量?

在不涉及表的情况下select常量在SQL语句中是完全合法的: SELECT 1, 2, 3 后者返回的结果集是包含值的单个行。 我想知道是否有一种方法可以使用常量expression式一次select多行: SELECT ((1, 2, 3), (4, 5, 6), (7, 8, 9)) 我想要像上面这样的工作,并返回一个结果集3行3列。

在没有连接的string中包含常量

有没有一种方法在PHP中包含一个string常量不串联? define('MY_CONSTANT', 42); echo "This is my constant: MY_CONSTANT";