我知道在可能的情况下,在通过引用或指针传递参数时,应尽可能使用const关键字.如果我指定参数是常量,编译器可以做的任何优化吗?
可能有几种情况:
功能参数:
常量参考:
void foo(const SomeClass& obj)
Run Code Online (Sandbox Code Playgroud)
Constant SomeClass对象:
void foo(const SomeClass* pObj)
Run Code Online (Sandbox Code Playgroud)
并且指向SomeClass的常量指针:
void foo(SomeClass* const pObj)
Run Code Online (Sandbox Code Playgroud)
变量声明:
const int i = 1234
Run Code Online (Sandbox Code Playgroud)
函数声明:
const char* foo()
Run Code Online (Sandbox Code Playgroud)
每个提供什么样的编译器优化(如果有的话)?
我有以下代码:
void TestFunc(const void * const Var1, const float Var2)
{
*(float*)Var1 = Var2;
}
看起来我正在改变const指针所指向的const对象的值(感谢sharptooth),这是不允许的.事实是,我试过的编译器都没有发出警告.这怎么可能?