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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值