指针指向函数赋值
pointer to function assignment
为什么没有'&'的赋值会在下面的代码中编译?我用GCC 3.4.6编译代码。不带&是对的吗?还是说这是GCC的一个"特性"?
void func() {
}
int main() {
typedef void (*F)();
F f;
f = &func; // the way of assigning pointer to function.
f = func; // this is also working.
(*f)();
return 0;
}
这完全没问题。两个表述是完全等价的。通过标准转换将函数lvalue转换为指向函数的指针。§4.3/1:
函数类型T的左值可以转换为"指向T的指针"类型的右值,结果是指向该函数的指针。
相关文章:
- gtest_使用setargpointee在函数中赋值
- 为什么在使用转换构造函数赋值后调用C++类的析构函数?
- 全局作用域中函数指针的赋值
- 关于 c++ 函数中指针赋值的简单问题
- 复制构造函数、赋值运算符C++
- 复制包含C++所有元素的对象!(构造函数和赋值,最佳实践?
- 移动赋值运算符;尝试引用已删除的函数.我该如何解决这个问题?
- C++ 基本 CTOR 说明 - 为什么不调用赋值/复制构造函数
- 为用户定义的类正确调用复制构造函数/赋值运算符
- 为什么我不能在返回 const 的布尔函数中为类成员变量赋值?C++
- 赋值 boost::intrusive_ptr 而不调用构造函数?
- C++矢量复制构造函数和赋值运算符是否也复制保留空间?
- 复制赋值函数如何访问另一个对象的私有成员(Stroustroup 原则和实践书)?
- 为什么我不能为变量赋值函数?
- C++标准是否对向量赋值函数或构造函数提出了明确的要求
- 为什么当复制赋值函数不返回任何内容时编译器不引发错误?
- 为什么当定义析构函数时,编译器不再添加默认的move函数和赋值函数
- 编译器为具有引用和常量成员的类生成了复制/赋值函数
- 添加unique_ptr作为类的实例字段,而不是显式地删除复制/赋值函数
- c++只赋值函数调用返回的结构体的一部分