C++返回类型问题
C++ return type question
这些之间有什么区别吗:
struct Class* CreateClass();
和:
Class* CreateClass();
它只是一个工厂函数声明。你可以看到一个在开始时有结构,一个没有。我已经尝试了两种方式,但似乎没有区别。
我应该使用哪个?
它来自 C;C++没有区别*。
*好吧,我撒谎了,对不起。 :P 如果您真的愿意,您可以混淆自己,如果您使用具有相同名称但不同基础类型的typedef
,则使它们有所不同,但通常它们没有不同。不过,这是假设Class
已经声明了......如果未声明Class
,则第二个甚至不会编译。
也就是说,公约是要做的:
typedef struct Class { ... } Class;
这样它在 C 和 C++ 中的编译方式相同。
只要
范围内没有同名的函数Class
,它就没有区别。您不应该编写与类同名的函数,并且要遵循常见的C++样式,您应该只使用Class *
。
[编辑:与Mehrdad相同的更正,没有函数或类型定义]
在C++中,没有区别。 使用"struct
"只是为了向后兼容C,其中声明struct foo { ... };
将声明一个名为"struct foo
"的类型,而"foo
"只有在使用typedef struct foo foo
时才是一个有效的类型名。
相关文章:
- 如何获取std::result_of函数的返回类型
- 奇怪的结构&GCC&clang(void*返回类型)
- 如何建立使用模板函数的lambda函数的尾部返回类型
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 函数作为模板参数,是否对返回类型强制约束
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- 特征返回类型的 pybind11 问题
- 类型转换问题:返回为整数而不是浮点/类型
- 必须使用尾随返回类型的示例,因为无法用旧方法解决问题
- 有关 C++17 中的尾随返回类型的问题
- 我的问题是关于类成员函数作为类指针的返回类型
- C 多重继承,虚拟方法覆盖问题和协变量返回类型
- 函数返回类型名列表:<T>:迭代器有什么问题?
- 尾随返回类型中的名称查找问题
- 正常函数的返回类型推导问题
- 使用受限函数时,尾随返回类型问题
- 使用我的结构作为返回类型的问题
- C++返回类型问题