有没有办法在c ++中定义类成员函数时跳过类名?

fir*_*oke 2 c++ class function objective-c

例如,我在dog.h中声明了一个名为Dog的类:

class Dog {
public:
    void bark();
private:
    int count;
}
Run Code Online (Sandbox Code Playgroud)

有什么办法可以在dog.cpp中编写以下代码:

void bark() {
   printf("count: %d", count);
}
Run Code Online (Sandbox Code Playgroud)

代替:

void Dog::bark() {
   printf("count: %d", count);
}
Run Code Online (Sandbox Code Playgroud)

如果我有大量应该定义的类函数,它将有助于节省时间.(我可以将函数定义复制粘贴到.h文件中,而不必每次都删除类名.)

在objective-c代码中,我可以在.m(它的角色就像.cpp)文件中添加一个"@implementation ... @end"范围,然后我可以像这样编写函数:

in dog.h:
- (void) bark;

in dog.m:
@implementation Dog
- (void) bark {
    printf("count: %d", count);
}
@end
Run Code Online (Sandbox Code Playgroud)

所以我想也许在c ++中有类似的方式.

你看,我可以将.m文件中的函数定义代码复制到.h文件中,只需要添加一个";" 行尾的符号.如果类函数是私有的,我甚至不需要在.h文件中声明它.所以我认为在声明一个类时,objective-c比c ++更方便.

R S*_*ahu 5

有什么办法可以在dog.cpp中编写以下代码吗?

不,你做不到.在类定义之外定义成员函数时,必须使用类名.

从C++ 11标准:

9.3会员职能

5如果成员函数的定义在词法定义之外是词法定义,则成员函数名称应使用::运算符通过其类名限定.