![]() |
1
6
C型变量函数是 沉重地 在C++中不鼓励。风格各异,但写这类函数会让你在某些圈子里(包括我的圈子)晕头转向,除非有真正特殊的原因。 就权衡而言,C型变量函数是完全类型不安全的。您可以尝试从变量包中提取错误类型的内容,这将导致segfault。C++可变模板是强类型的,所以这是不可能的(当然,除非你用reinterpret_cast或类似的方法强制它)。
|
![]() |
2
4
C++力求比C更安全。
当参数处于
|
![]() |
3
2
可变参数函数没有太多好处,但也有一些好处。
C++可变模板是类型安全的,而C可变函数不是。这意味着编译器通常不会强制函数传递给变量函数的参数类型。GCC和Clang支持一些处理常见情况的属性:
搞砸的可能性仍然很大。例如
标准允许但不要求实现允许将非POD类型传递给C变量函数;当它工作时,语义是由实现定义的。这意味着,如果希望代码跨平台,就不应该这样做。
|