关于通过const指针/ const引用传递的2个快速问题

时间:2010-02-18 03:12:51

标签: c++ reference pointers const

1)有人可以解释以下内容吗?

void OnCreate(HWND hWnd, const LPCREATESTRUCT lpCreateStruct)
{
   lpCreateStruct->x = 2; // this compiles
}

void OnCreate(HWND hWnd, const CREATESTRUCT * lpCreateStruct)
{
   lpCreateStruct->x = 2; // this does not compile
}

2)通过指针或引用传递更快?或者相同?

2 个答案:

答案 0 :(得分:5)

const LPCREATESTRUCT扩展为CREATESTRUCT* const,即指向非const结构的常量指针,而 const CREATESTRUCT*是一个指向常量结构的非常量指针,因此编译器是正确的。

答案 1 :(得分:2)

  

为什么以下将2分配给x   什么时候是常量?

不应该,任何符合标准的编译器都会导致错误,因为ms指向const my_structure

编辑:

根据您更新的案例,它是typedef如何工作的问题:

typedef T* TPtr;

void f(const TPtr);
void g(T* const);
void h(const T*);

f()g()都是等效的,并且const指向T,而h()指向const T