C++私有继承以及向上转型

/*
*私有继承,向上转型实例
*作者 :邱于涵
*2015年2月18日16:43:08
*/
#ifndef MYCLASS_H
#define MYCLASS_H
#include 
#include 
using namespace std;
class myclass :private vector,private string
{
public:
	int & operator[](int);
	void push_back(int);
	myclass(char *, int);
	int size();
	string Name();
};
#endif
/*
*私有继承,向上转型实例
*作者 :邱于涵
*2015年2月18日16:43:08
*/
#include "myclass.h"
#include 
#include 
using namespace std;
myclass::myclass(char *name, int size) :vector::vector(size), string(name)
{
   
}
void myclass::push_back(int x)
{
	return vector::push_back(x);
}
int & myclass::operator[](int x)
{
	return vector::operator[](x);
}
int myclass::size()
{
	return vector::size();
}
string myclass::Name()
{
	//return string::data();   //这句话等价于下面 的向上转型
	//向上转型 获得 String
	return (string)*this;
}
/*
*私有继承,向上转型实例
*作者 :邱于涵
*2015年2月18日16:43:08
*/
#include 
#include "myclass.h"
using namespace std;
int main()
{
	myclass *p = new myclass("邱邱", 1);
	p->push_back(1);
	cout << (*p).size() << endl;
	cout <<(*p)[1] << endl;
	cout << p->Name() << endl;

	cin.get();
}

你可能感兴趣的:(C++)