C++的几个边缘问题~~~哪位好心人帮我查一下标准~~
现在手头没有标准文档,谁帮我查一下有关以下几个问题的标准定义..先谢过了!!!
1.
class A{
virtual void f();
};
class B {
virtual void f();
};
class C : public A, public B {
void f();
};
在上例中,class C中的f改写了A,B中的函数f.如何分别改写A和B里的f.因为有可能A,B中,f的含意不同...
2.
template< template<typename> class _T >
class A{
};
template< typename _T >
class B : public A< B > {
typedef A< B > BaseType;
};
在例2中,A<B>这种写法,有些编译器是无法编译的.因为C++中,模板的名称解析规则里,对于这种不完整而又没有歧义的类型名B,可以看作B<_T>.而A的模板参数要求是模板.这里就不能看做是B<_T>.在VC8里,public A<B>处B没有被当做B<_T>,而typedef处,却当作了B<_T>.不知道有什么解决办法.
当然,对于编译器来说,要分辨出这些情况,是很简单的事.但我不记得标准对这种东西有没有什么说法了.