您的位置:首页 > 编程语言 > C语言/C++

C++学习之成员函数的访问属性与继承属性对虚表构建的影响--个人理解

2014-03-28 15:39 666 查看
C++学习之深入理解虚函数--虚函数表解之后,我感觉虚表的构建跟虚函数在基类中的访问属性、继承属性、在子类中的访问属性都没关系。

反正也就27种情况,自己可以试下:如下面

#include<iostream>
#include<cstdlib>
class parent1 {
public:
	virtual void print(){
		std::cout<<"in parent1"<<std::endl;
	}
};
class derived1 :public parent1{
private:
	virtual void print(){
		std::cout<<"in derived1"<<std::endl;
	}
};
class parent2 {
private:
	friend void parFriend2(parent2*p);
	virtual void print(){
		std::cout<<"in parent2"<<std::endl;
	}
};
void parFriend2(parent2*p){
	p->print();
}
class derived2:protected parent2{
private:
	virtual void print(){
		std::cout<<"in derived2"<<std::endl;
	}
};
class parent3 {
private:
	friend void parFriend3(parent3*p){
		p->print();
	}
	virtual void print(){
		std::cout<<"in parent3"<<std::endl;
	}
};
void parFriend3(parent3*);
class derived3 :private parent3{
protected:
	virtual void print(){
		std::cout<<"in derived3"<<std::endl;
	}
};
int main(int argc,char** argv){
	parent1* p1=new derived1;
	p1->print();
	parent2* p2=(parent2*)new derived2;
	parFriend2(p2);
	parent3* p3=(parent3*)new derived3;
	parFriend3(p3);
	return EXIT_SUCCESS;
}


输出:

in derived1

in derived2

in derived3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐