翻了好多地方,有人说在成员前面加this->可以解决,果然可以,但一直不明白原因,
代码:
#include <iostream>
#include <map>
#include <string>
#include <deque>
#include <vector>
using namespace std;
template <class T>
class b {
public:
b(){}
b(T i){
x.push_back(i);
}
void print(){
if(x.size()>0)
cout<<x[0]<<endl;
}
protected:
vector<T> x;
};
template <class T>
class e: public b<T>{
public:
e(T i):b<T>(i){
}
void print(){
if(this->x.size()>0)//这里要加this->或者b<T>::
cout<<this->x[0]<<endl;
}
};
int main()
{
e<int> a(1);
a.print();
}
在http://forum.ubuntu.org.cn/viewtopic.php?t=240044上有人解释了说是编译器偷懒的原因
分享到:
相关推荐
C++多线程基类C++多线程基类C++多线程基类C++多线程基类C++多线程基类C++多线程基类C++多线程基类C++多线程基类C++多线程基类
声名一个基类vehicle,有私有成员maxspeed和weight,公有成员run()和stop(),以及构造和析构函数。 从vehicle派生bicycle和motorcar, bicycle有私有成员height, motorcar有私有成员seatnum,以及各自的构造函数和析构...
三种继承方式下基类成员对派生类的可见性探讨(公有继承、私有继承、受保护继承)
构造求解圆柱体体积,侧面积的类 Cylinder;再派生出求解圆柱体质量(重量)的类 Pillar。写出完整的程序(包括功能测试的主程序)。
函数隐藏是指派生类中函数与基类中的函数同名,但是这个函数在基类中并没有被定义为虚函数,这种情况就是函数的隐藏。 所谓隐藏是指使用常规的调用方法,派生类对象访问这个函数时,会优先访问派生类中的这个函数,...
(1)定义人员类Person: 公有成员:姓名(Name); 保护成员:性别(Gender),年龄(Age); 构造函数和析构函数 (2) 从人员类Person派生学生记录类StudentRecord: 添加公有成员:学号(Number),班级...
用c++ 定义一个车(Vehicle)基类,有Run,Stop等成员函数,由此派生出自行车(bicycle)类,汽车(motorcar)类,从bicycle和 motorcar派生出摩托车(motorcycle)类,他们都有Run,Stop等成员函数。编写完整并用主函数测试...
定义一个Person 类,结构如下图,为该类添加输入输出流运算符重载。Person 类以Public方式派生出一个Teacher类,数据成员包括:int gh(工号);char* title(职称),为该类添加输入输出流运算符重载,完成有参、无参、...
vc三方库 各种高级界面窗口的基类.zip
2.定义Shape类的派生类三角形Tangle,使用base关键字调用基类构造函数,重写Shape类继承的虚方法:求面积虚方法Mianji(),求周长虚方法Zhouchang()。 3.定义Shape类的派生类圆形Circle,重写Shape类继承的虚方法:...
在公用继承、私有继承和保护继承中,只有公用继承能较好地保留基类的特征,它保留了除构造函数和析构函数以外的基类所有成员,基类的公用或保护成员的访问权限在派生类中全部都按原样保留下来了,在派生类外可以调用...
C++课后题,写的时候脑子比较乱,也不太会写注释,各位随意看看就好 题目:设计基类点类(Point)、直接派生类圆类(Circle)、间接派生类圆柱体类(Cylinder),将求面积的函数(area)声明成虚函数,并在主函数实现...
题目:定义三个类Point,Circle和Cylinder,Point类为基类,为上述3个类添加计算面积的成员函数Area(),要求函数Area()采用虚函数的形式,并通过基类指针调用虚函数Area()。 编程环境:vs2010 属性:控制台应用程序...
在C++多继承体系当中,在派生类中可以重写不同基类中的虚函数。下面就是一个例子:
而继承包含了虚拟继承和普通继承,在可见性上分为public、protected、private。可见性继承比较简单,而虚拟继承对学习c++的难度较大。 首先,虚拟继承与普通继承的区别有: 假设derived 继承自base类,那么...
利用C++计算正方形,矩形,三角形圆形的面积,包含了虚函数,继承,多态相关的基础知识,这是一个示例程序力求简单易懂。代码采用VC6.0建立工程。
c++多重继承与虚基类的ppt 讲细致 易懂
定义Shape类的派生类三角形Tangle,使用base关键字调用基类构造函数,重写Shape类继承的虚方法:求面积虚方法Mianji(),求周长虚方法Zhouchang()。 3.定义Shape类的派生类圆形Circle,重写Shape类继承的虚方法:求...
在继承中产生歧义的原因有可能是继承类继承了基类多次,从而产生了多个拷贝,即不止一次的通过多个路径继承类在内存中创建了基类成员的多份拷贝。虚基类的基本原则是在内存中只有基类成员的一份拷贝。这样,通过把...