【发布时间】:2015-07-27 05:38:29
【问题描述】:
例如,我在 dog.h 中声明了一个名为 Dog 的类:
class Dog {
public:
void bark();
private:
int count;
}
有什么办法可以在 dog.cpp 中写下以下代码:
void bark() {
printf("count: %d", count);
}
代替:
void Dog::bark() {
printf("count: %d", count);
}
如果我有大量应该定义的类函数,这将有助于节省时间。 (我可以将函数定义复制粘贴到 .h 文件中,而无需每次都删除类名。)
在objective-c代码中,我可以在.m(它的作用就像.cpp)文件中添加一个“@implementation ... @end”范围,然后我可以像这样编写函数:
in dog.h:
- (void) bark;
in dog.m:
@implementation Dog
- (void) bark {
printf("count: %d", count);
}
@end
所以我认为c++中可能有类似的方式。
你看,我可以将.m文件中的函数定义代码复制到.h文件中,只需要加一个“;”行尾的符号。如果类函数是私有函数,我什至不需要在 .h 文件中声明它。所以我觉得objective-c在声明类的时候比c++方便。
【问题讨论】:
-
拥有
@implementation...@end意味着您不能可靠地识别非成员函数而不搜索回文件的顶部(或者可能是以前的@end- 如果有的话- 或关闭命名空间或任何其他实现无法跨越的东西)。我想同样的批评也可以针对命名空间。 -
您提到您只想复制粘贴内容。你到底想做什么?您可能还可以使用其他技术来避免代码重复。
标签: c++ objective-c function class