在C#中使用private const变量或private static readonly变量之间是否有区别(除了必须分配const编译时表达式)?
由于它们都是私有的,因此没有与其他库的链接.它会有什么不同吗?例如,它可以产生性能差异吗?实习字符串?有什么相似的吗?
我只是想知道如何
void test()
{
const static int ABC = 12;
cout << ABC;
}
Run Code Online (Sandbox Code Playgroud)
不同于
void test()
{
const int ABC = 12;
cout << ABC;
}
Run Code Online (Sandbox Code Playgroud)
如果在程序执行时重复调用此函数?我的意思是,有任何性能差异吗?或者是否有理由为什么你应该更喜欢一个?
如果我创建一个const联合对象(例如在下面的代码中),那么就不能完成成员赋值.那么在任何情况下都有使用const联合对象吗?
union un
{
int i;
float f;
char c;
};
const union un a;
/// ! a.i = 10; error.
Run Code Online (Sandbox Code Playgroud) 为延迟初始化的成员变量实现getter方法并保持const正确性的正确方法是什么?也就是说,我想让我的getter方法成为const,因为在第一次使用它之后,它是一个普通的getter方法.这是第一次(首次初始化对象时)const不适用.我想做什么:
class MyClass {
MyClass() : expensive_object_(NULL) {}
QObject* GetExpensiveObject() const {
if (!expensive_object_) {
expensive_object = CreateExpensiveObject();
}
return expensive_object_;
}
private:
QObject *expensive_object_;
};
Run Code Online (Sandbox Code Playgroud)
我可以吃蛋糕吗?
可能重复:
声明一个Const数组
我需要在类中使用一个const字符串数组.就像是
public class some_class_t
{
public const string[] names = new string[4]
{
"alpha", "beta", "gamma", "delta"
};
}
Run Code Online (Sandbox Code Playgroud)
但是这段代码会导致错误:
引用类型'string []'的常量"名称"只能用null初始化.
我该怎么办?
__attribute__((const))和__attribute__((pure))GNU C有什么区别?
__attribute__((const)) int f() {
/* ... */
return 4;
}
Run Code Online (Sandbox Code Playgroud)
VS
__attribute__((pure)) int f() {
/* ... */
return 4;
}
Run Code Online (Sandbox Code Playgroud) 我有一个类型的成员变量vector<T>(其中T是一个自定义类,但它也可以是int.)我有一个函数,我想从中返回一个指向这个向量的指针,但我不希望调用者能够改变矢量或它的项目.所以我想要返回类型const vector<const T>*
我尝试过的铸造方法都没有.编译器一直在抱怨T与const T不兼容.
这里有一些代码,展示了我正在尝试做的事情的要点;
vector<int> a;
const vector<const int>* b = (const vector<const int>* ) (&a);
Run Code Online (Sandbox Code Playgroud)
这段代码不能为我编译.
提前致谢!
如何将以下C#十六进制转换为VB.NET十六进制?
private const UInt32 temp = 0xE6359A60;
Run Code Online (Sandbox Code Playgroud)
我尝试了以下,但它不起作用.
Public Const temp As System.UInt32 = 0xE6359A60
Run Code Online (Sandbox Code Playgroud) 这是错误:
error: static member function ‘static void myClass::myfunct()’ cannot have cv-qualifier
Run Code Online (Sandbox Code Playgroud)
有人可以解释这个错误以及为什么const不能使用.
#include<iostream>
class myClass{
static void myfunct() const
{
//do something
}
};
int main()
{
//some code
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我不确定它的真正含义const vector<int *>所以我编写了下面的代码来获得一个想法但现在更加困惑.
vector<int *> v;
int x = 1, y = 2;
v.push_back(&x);
v.push_back(&y);
const vector<int *> w = v;
w[0] = &y; //failed. Element is a constant pointer?
*(w[0]) ++; //failed. Element pointer references to constant value?
Run Code Online (Sandbox Code Playgroud)
如果我在这里停下来,我会假设这const vector<int *>是一个向量const int * const,但后来我尝试了以下与这个假设明显矛盾的方法.
*(w[0]) += 3; //passed. Value not constant?
*(w[0]) = 20; //passed. Why...
Run Code Online (Sandbox Code Playgroud)
现在,*(w[0])对于未知的原因我明明对待++,并+=和分配方式不同.我确信自己const vector只声明了vector类的一个常量对象,并且上面的结果可能取决于运算符重载vector类的实际实现.但我无法绕过这个.有人可以帮忙解释一下吗?
如果它是相关的,我在Mac上使用g ++ 4.2.