关于面向对象中的继承和模板中的继承
来源:互联网 发布:.cn域名能用于商业吗? 编辑:程序博客网 时间:2024/05/22 22:07
一旦我们跨入Template C++的大门,继承就不像以前那般通畅无阻了。如下例:
template<typename T>
class Base
{
public:
void print()
{
cout << "Base" << endl;
}
};
template<typename T>
class Derived: public Base<T>
{
public:
void print2()
{
print(); //调用base class函数,产生编译错误
}
};
对于一个好的编译器,如果我们尝试在derived class template中调用base class template中的成员函数时,会产生编译错误,因为我们在编译器遇到Derived时,并不知道它继承什么样子的class,更不知道base class中是否存在print()函数。解决方法有:
(1) 在base class函数调用动作前加上“this->”:
void print2()
{
this->print(); //OK
}
(2) 使用using声明:
class Derived: public Base<T>
{
public:
using Base<T>::print(); //告诉编译器,print()位于base class中
void print2()
{
print(x); //调用base class函数,产生编译错误
}
};
(3) 使用作用域限定符:
void print2()
{
Base<T>::print(); //OK
}
- 关于面向对象中的继承和模板中的继承
- javascript实现面向对象中的继承模板
- 面向对象中的继承
- JavaScript中的面向对象----继承
- Java面向对象中的继承
- java 面向对象中的继承
- 面向对象编程中的继承和组合的简单比较
- 面向对象编程中的继承和组合的简单比较
- 面向对象编程中的继承和组合的简单比较
- 面向对象编程中的多态和继承
- 面向对象编程中的继承和组合的简单比较
- Lua 中的面向对象编程之封装和继承
- java面向对象中的封装、继承和多态
- java中的面向对象(封装、继承和多态)
- 面向对象 -- 继承和Java中的构造器
- 面向对象编程中的继承,多态,封装。
- 面向对象设计中的继承、组合、聚合
- 面向对象中的继承与多态
- 香港一日游:)
- Apache Cache编译安装以及详细介绍及问题处理
- SQLITE3 使用总结本
- CT窗口技术的选择与应用
- 双线主机
- 关于面向对象中的继承和模板中的继承
- 简单工厂模式vs工厂方法模式vs抽象工厂模式
- 第五届MobileDev Day
- 大家好
- 大家好
- C# 创建windows服务
- 让万能标签get 支持嵌套查询,小改动
- 学会使用Web Service
- 内存泄露的排查