C++:contructor() 和 constructor(void) 之间的区别
C++: Difference between contructor() and constructor(void)
我注意到,当我在Visual Studio中创建一个新的C++类时,它会将Foo(void)
和~Foo(void)
写为构造函数和析构函数模板,而不是Foo()
和~Foo()
。但是,这两个版本似乎都有效。两者之间有区别还是我使用哪个版本根本不重要?
在C++中,两者在技术上是相同的,就像"一个没有参数的函数"一样。
欲了解更多信息:
然而,在C语言中,Foo(void)是"一个不接受参数的函数",但Foo()是"一个接受未知数量参数的函数"。这些参数属于未指定的类型。
Foo(void) 在两种语言中使用,具有相同的含义。
两者都是等效的,所以这只是一种样式选择。我更喜欢Foo()
因为它涉及较少的打字,而且这是我经常看到的。
这个问题实际上在SO之前已经讨论过。
显然,foo()
在C中意味着"一个函数foo
接受未指定数量的未指定类型的参数",而在C++中,它意味着"一个foo
不带参数的函数"。
只有当构造函数和析构函数不需要任何参数时,才有相同的参数。此外,Foo(void)
似乎不太常用。
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 在 const 函数中通过引用和指针返回之间的区别
- 我想知道长双倍和双倍之间的区别
- 这 4 个 lambda 表达式之间有什么区别?
- 结构体 S { int align; } 之间的区别;(struct 关键字后的名称)和 struct { int al
- (double) 和 double() 之间的区别
- & 和 * 之间的区别
- std::is_convertible 和 std::convertible_to 之间的区别(在实践中)?
- 析构函数和'delete'之间的区别
- 在 typedef 内部使用 const 关键字和在 typedef 外部使用 const 关键字之间有区别吗?
- 从预序遍历构造 bst 的 c++ 和 python 解决方案之间的区别
- vector.back() 和 vector[vector.size() - 1] 之间的区别?
- 空指针常量 (nullptr)、空指针值和空成员指针值之间有什么区别?
- 函数签名与调用的函数不匹配,常量字符[]和字符*之间的区别?
- OpenMP #pragma omp for v/s #pragma omp parallel for 之间的区别?
- S() 与 S{} 之间的区别?