Reputation: 11975
class PageNavigator {
public:
// Opens a URL with the given disposition. The transition specifies how this
// navigation should be recorded in the history system (for example, typed).
virtual void OpenURL(const GURL& url, const GURL& referrer,
WindowOpenDisposition disposition,
PageTransition::Type transition) = 0;
};
I don't understand what is that =0; part...what are we trying to communicate?
Upvotes: 2
Views: 242
Reputation: 14512
'= 0' means it's a pure virtual method. It must be overriden in inheriting class.
If a class has a pure virtual method it is considered abstract. Instances (objects) of abstract classes cannot be created. They are intended to be used as base classes only.
Curious detail: '= 0' doesn't mean method has no definition (no body). You can still provide method body, e.g.:
class A
{
public:
virtual void f() = 0;
virtual ~A() {}
};
void A::f()
{
std::cout << "This is A::f.\n";
}
class B : public A
{
public:
void f();
}
void B::f()
{
A::f();
std::cout << "And this is B::f.\n";
}
Upvotes: 10
Reputation: 1156
The = 0 means the function is a pure virtual or abstract function, which in practice means two things:
a) A class with an abstract function is an abstract class. You cannot instantiate an abstract class.
b) You have to define a subclass which overrides it with an implementation.
Upvotes: 0
Reputation: 34408
It's a pure virtual function - there's no definition in the base class, making this an abstract class, and any instantiable class that inherits from PageNavigator must define this function.
Upvotes: 3