2016-11-12 50 views
1

5年前我开始用java编程,所以当我在2年前转向C++时,成员函数的实现相当令人恼火。C++:避免​​在每个成员函数之前输入类名的方法吗?

Foo::bar(){/*some stuff*/} 
Foo::baz(){/*some other stuff*/} 

那时候我只是有点习惯了,但最近我想知道是否有任何的方法来组织代码,以避免打字是富::每一个功能,也许是这样的:

Foo::{ 
    bar(){//some stuff} 
    baz(){//some other stuff} 
} 

我发现,即使在2年后,即使我自己的代码读取也仍然有困难,因为函数的名字本身并不是第一行。

编辑:由于这个问题是重复的,我以为我会分享一件事,我发现点击链接。目前这是绝对不可能的,但有一个proposal将其添加到标准。不知道是否或何时可能实际添加,但如果您从现在开始阅读这些内容,这可能是一个很好的选择。

+2

但写入公共或私人都不刺激;) – Logman

回答

1

不,不存在(除非你定义了一个成员函数的上下文与它的声明,因此当你定义你的类 - 这或多或少是Java实际发生的事情)。

换句话说,如果你不希望这样做:

// .h 
struct S { void f(); }; 
// .cpp 
void S::f() {} 

你仍然可以做到这一点:

// .h 
struct S { void f() {} }; 

反正它也有缺点,你不能做好应对与他们在任何情况下。

+0

问题是,你的例子是不完全平等的。 – Logman

+0

@Logman:第二个增加了调用'S :: f()'的内联的可能性,但是这两个在功能上是等价的。 – Peter

+0

我也希望能够将类声明和实现分开。我认为在这种情况下我不能吃我的蛋糕并吃它? – ThaHypnotoad

相关问题