1. 模板
例子1
template <class T>
void f(T)
{
static int i = 0;
cout<<++i;
}
int main()
{
f(1);
f(1.0);
f(1);
system("pause");
return 0;
}
输出:112
因为1.0和1是不同的类型
例子2
template <class T>
void f(T &i)
{
cout<<1;
}
template <>
void f(const int &i)
{
cout<<2;
}
int main()
{
int i=8;
f(i);
const int j=5;
f(j);
system("pause");
return 0;
}
输出:12
2. 虚函数和派生
例子1
class A
{
public:
virtual void f()
{
cout<<"a";
}
};
class B:public A
{
private:
void f()
{
cout<<"b";
}
};
void g(A &a)
{
a.f();
}
int main()
{
B gb;
g(gb);
system("pause");
return 0;
}
输出:b
例子2
class A
{
public:
virtual void f()
{
cout<<1;
}
};
class B:public A
{
public:
void f()
{
cout<<2;
}
};
class C:public B
{
public:
void f()
{
cout<<3;
}
};
int main()
{
B *p = new C;
p->f();
system("pause");
return 0;
}
输出:3