调用没有主体的未实现静态方法
Calling non-implemented static method without body
template <class T, class U>
struct Conversion {
typedef char Small;
class Big
{
char dummy[2];
};
static Small Test(const U&);
static Big Test(...);
static T MakeT();
enum { check=sizeof( Test( MakeT() ) ) == sizeof( Small ) };
};
我在互联网上看到了这个例子。它检查两个对象的转换能力。该资源解释了旧方式 cpp 的模板技巧。我不太明白为什么在传递给 Test(( 时调用 MakeT((。最后,为什么这一切都有效。关键是这些静态函数中没有主体,因此,它们不返回任何内容。请帮帮我。
它并没有真正被调用,因为它写在可以应用于未计算操作数的sizeof
内部。sizeof
正确返回Test
返回的值的大小,因为Big
是一个完整的类型,但它并不关心Test
或MakeT
是否有正文。
相关文章:
- 尝试了解在导入的静态方法上使用删除方法时的错误
- 如何通过命名空间调用非静态方法
- 如何在没有实例的情况下获取非静态方法的类型?
- 调用从模板派生的类的静态方法,而不指定模板
- 如何在 c++ 中异步调用静态方法?
- C++ 将静态方法转换为简单方法
- 从另一个标头中的标头调用静态方法
- C++中静态方法的局部变量范围
- 如何启用使用另一个类的静态方法的模板函数的自动推导,从而消除冗长的调用方代码
- 使用本机 JNI 静态方法实现C++ Java 运行时错误
- 当只有静态方法受到影响时,如何解决C++中的链接器错误?
- CMake + Qt,moc 编译失败,无法实现 QMetaObject 方法(编译器找不到基本 ui 对象的标头?
- 静态变量在同一个翻译单元中被静态方法使用时是否保证被初始化?
- 将非类库分离为标头和实现的方法
- 为什么链接器报告全局函数的乘法定义符号,而不是类静态方法
- 调用没有主体的未实现静态方法
- 在可执行文件中实现静态方法是否安全,该方法已在共享库中实现
- 在C++中使用静态方法来实现工厂模式
- 不能对 c++ 类实现文件中的静态方法使用 "static" 关键字 (.cpp)
- 在模板类中实现和调用静态方法