c++;:有没有办法避免在每个成员函数之前键入类名? 我开始在5年前用java编程,所以当我2年前移到C++时,成员函数的实现相当恼人。 Foo::bar(){/*some stuff*/} Foo::baz(){/*some other stuff*/}
当时我只是有点习惯了,但最近我想知道是否有任何方法可以构造代码以避免键入Foo::every函数,可能类似于:c++;:有没有办法避免在每个成员函数之前键入类名? 我开始在5年前用java编程,所以当我2年前移到C++时,成员函数的实现相当恼人。 Foo::bar(){/*some stuff*/} Foo::baz(){/*some other stuff*/},c++,member-functions,C++,Member Functions,当时我只是有点习惯了,但最近我想知道是否有任何方法可以构造代码以避免键入Foo::every函数,可能类似于: Foo::{ bar(){//some stuff} baz(){//some other stuff} } 我发现,即使两年后,我仍然难以阅读自己的代码,因为函数本身的名称并不是第一件事 编辑:由于这个问题是重复的,我想我会分享一件事,我发现点击链接。目前这显然是不可能的,但有一个方法可以将其添加到标准中。不知道它是否或何时会被添加,但如果几年后您正在阅读这篇文章,
Foo::{
bar(){//some stuff}
baz(){//some other stuff}
}
我发现,即使两年后,我仍然难以阅读自己的代码,因为函数本身的名称并不是第一件事
编辑:由于这个问题是重复的,我想我会分享一件事,我发现点击链接。目前这显然是不可能的,但有一个方法可以将其添加到标准中。不知道它是否或何时会被添加,但如果几年后您正在阅读这篇文章,这可能是一个很好的线索。不,没有(除非您使用声明上下文定义一个成员函数,因此当您定义类时——这或多或少是Java中实际发生的情况)
换句话说,如果您不想这样做:
// .h
struct S { void f(); };
// .cpp
void S::f() {}
您仍然可以这样做:
// .h
struct S { void f() {} };
无论如何,它也有缺点,在任何情况下,你都不能准备好处理它们。但在任何地方写公开或私人的东西都不会让人恼火;)问题是您的示例并不完全相同。@Logman:第二个示例增加了对
S::f()
的调用可以内联的可能性,但这两个调用在功能上是等效的。我还希望能够将类声明和实现分开。在这种情况下,我认为我不能既吃蛋糕又吃蛋糕?