![]() |
1
81
模板元编程
示例:类型表达式
简化函数指针类型
|
![]() |
2
31
在比亚恩的书中,他指出可以使用typedef来处理具有不同整数大小的系统之间的可移植性问题。(这是释义) 在sizeof(int)为4的机器上
然后在代码中的任何地方使用int32。当你移动到C++的一个实现时,siZeof(int)是2,那么你可以只改变类型
您的程序仍将在新的实现上工作。 |
![]() |
3
18
与函数指针一起使用 隐藏typedef的函数指针声明
只有很少的程序员知道P是一个“指向返回void的函数的10个指针数组,以及指向返回void且不带参数的另一个函数的指针数组”,这种繁琐的语法几乎无法识别。但是,您可以通过使用typedef声明来大大简化它。首先,为“指向返回void且不带参数的函数的指针”声明typedef,如下所示:
接下来,根据前面声明的typedef为“指向返回void并获取pfv的函数的指针”声明另一个typedef:
既然我们已经创建了一个pf_,将pfv typedef作为笨拙的“指向返回void和接受pfv的函数的指针”的同义词,那么声明一个由10个这样的指针组成的数组就轻而易举了:
|
![]() |
4
17
只是举几个例子说明一下:STL容器。
甚至使用typedef,比如
另一个例子:使用共享指针:
[更新] 根据评论-放在哪里?
最后一个示例-使用
换一种说法:如果有共享的指针,您可能应该只通过共享指针使用该类型,因此分离声明没有多大意义。 (是的,XYZFWD.H是一种疼痛。我只在热点使用它们-知道热点很难识别。归咎于C++编译+链接模型… 我通常在声明容器变量的地方使用容器typedef—例如,当实际容器实例是类成员时,本地用于局部变量,作为类成员。如果实际的容器类型是一个实现细节,这将很好地工作-不会导致额外的依赖。 如果它们成为 特定的 接口,它们与使用它们的接口一起声明,例如
当类型是不同接口之间的绑定元素时(即多个头需要相同的类型),就会出现问题。一些解决方案:
我同意后两个不是很好,我只有在遇到麻烦时才使用它们(不是主动的)。 |
![]() |
5
5
typedef在很多情况下都很有用。 基本上,它允许您为一个类型创建一个别名。当/如果您必须更改类型时,代码的其余部分可以保持不变(这当然取决于代码)。 例如,假设你想要一个C++的ITER向量
将来你可能会考虑用一个列表来改变向量,因为你必须对它进行操作。如果没有typedef,则必须更改代码中所有出现的向量。 但如果你写这样的话:
现在您只需更改一行代码(即从
typedef还可以节省您在具有复杂数据结构时的时间,这些数据结构非常长(而且难以读取)。 |
![]() |
6
5
使用typedef的一个很好的理由是,如果某个对象的类型可能发生更改。例如,假设现在16位整数可以为某些数据集建立索引,因为在可预见的将来,您将拥有少于65535个项,并且空间约束非常重要,或者需要良好的缓存性能。但是,如果您需要在超过65535个项目的数据集上使用程序,那么您希望能够轻松地切换到更宽的整数。使用typedef,您只需要在一个地方更改它。 |
![]() |
7
4
有时我也会使用字节数组。现在,字节数组可能意味着很多事情。
|
![]() |
8
2
typedef的实际用途:
|
![]() |
9
2
当我们想要启用一种 独立于容器的代码 (但不完全是!) 假设你有课:
上面的代码使用typedef封装了内部容器实现,即使将来列表容器需要更改为vector或deque,customerList类的用户仍然不需要担心确切的容器实现。 因此,typedef封装并在一定程度上帮助我们编写与容器无关的代码。 |
![]() |
10
0
每当它使源代码更清晰或更好地阅读时。 对于泛型/模板,我使用C中的typedef类型。“nodemapping”只是更好地阅读/使用和理解,而不是很多“dictionary<string,xmlnode>”。恕我直言。所以我推荐它作为模板。 |
![]() |
11
0
typedef允许类中的灵活性。当您想要更改程序中的数据类型时,您不需要更改多个位置,只需要更改一个事件。
你可以给任何名字而不是
所以你可以使用typedef-like
|
![]() |
12
-1
…对于枚举或结构,不需要typedef。 或者你呢?
可以写得更好
对吗?C怎么样? |
![]() |
Jersey · 如何在自己的定义中缩写类名? 7 年前 |
![]() |
Felix · 为什么我用typedef定义自然类型的尝试不起作用? 7 年前 |
![]() |
cppBeginner · 将“typedef”设为最终(或模拟) 7 年前 |
![]() |
coJetty · 使用或typedef减少模板参数 7 年前 |
![]() |
VannTen · 使用指向非结构类型的不透明指针 7 年前 |
|
John Smith · C中带有数组的Typedef 7 年前 |
![]() |
thndrwrks · 带有typedef ed函数指针的常量限定符 7 年前 |