Re: Good idea or gimmick: Go-style OO-programming in C++ ?
It's also a problem that you don't describe the features of Go! you
want us to have opinions on; it's probably something I'm familiar
with, but since I haven't studied Go! specifically I don't know what
"thin OO-layer" means.
/Jorgen
A class in Go:
type Point struct {
x, y float64
}
Adding a method to a class works like this:
func (self Point) Length() float {
return math.Sqrt(self.x*self.x + self.y*self.y);
}
Note that Length() is defined outside struct Point and the this pointer is =
handed over as a parameter (named self). A method in Go is public if the fi=
rst letter is upercase, otherwise it is private.
Inheritance in Go is achieved through delegation, which is built into the l=
anguage:
type Engine interface {
Start()
Stop()
}
type Car struct {
Engine
}
func GoToWorkIn(c Car) {
c.Start();
c.Stop();
}
In other words: there is no inheritance in Go. The sample code is taken fro=
m here: http://www.infoq.com/articles/google-go-primer
All right. You cannot mimic this in C++ and there is no point in bending a =
language like that. But the question remains whether more than that is real=
ly needed - at least for systems programming. In that respect, using C++ as=
a "C with classes" seems appropriate to me and not just a poor man's way t=
o code in C++. I belive many C/C+ systems develpoer just do it like that wi=
thout writing a book about it ...
-- Oliver