本文会记录以前学习面向对象编程(object-oriented programming, OOP)忽略的一些点。
静态成员变量/函数其实都不属于某一个类,而是全局空间,有点像加了个命名空间而已
int add(int a,int b);
long add(int a,int b,int c);
class Base
{
virtual void sayhi(int a,int b);
};
class Derived : public Base
{
void sayhi(int a,int b) override;
}
struct Base
{
void foo(int x) const {}
};
struct Derived : public Base
{
void foo(const std::string& s) {}
};
int main()
{
Derived d;
d.foo("abc");
d.foo(123); // Will not compile! Base::foo is hidden!
}
虚函数开销见这里,双重内存访问对性能要求极高的程序还是很大影响的