子类调用父类方法:c++和java的不同

本文对比了C++与Java中子类调用父类方法的区别,重点介绍了C++中如何通过子类调用父类的构造函数及普通方法,并给出了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

子类调用父类方法:c++java的不同

 

bool GameScene::init(){
	if (!Layer::init())
	{
		return false;
	}
}

我自定义了一个场景,在场景的初始化中,有这么一句:

Scene::init()

到这里,我百思不得其解,为什么呢?

 

下面分析:

因为我是一名java程序员,按照java的思想,使用类名调用的方法,就是静态方法,并且是全局的。因此到了这句,我就认为是调用了父类的一个全局函数。

 

这岂能怨我,谁然c++中的子类调用父类的方法,写成是:Scene::init()这种方式呢?这明显是java调用全局方法的写法吗,是不是。

 

从上面可以看出来,在这一点,java和c++是有很大的区别的,所以说,想学语言,首先要去学习java,因为简单呀,之后再去学习c,然后再来学习c++,因为东西太多了。

 

废话不多说了,现在来说一下上面的例子,其实很简单:

Scene::init()这个调用就是c++中很经常的调用,子类调用父类的方法,和java中的super.init()是一个概念,不存在什么全局不全局的问题。

 

补充一点:上面的是普通方法的子父类调用,对于构造函数里面,和上面所说的也完全一样,如下:

  

看到了么?就是这么简单。这个千万要和java区分开来。

 

class A
{
public:
	A()
	{
		printf("aaaa\n");
	}
	~A()
	{
		printf("~~~~~aa\n");
	}
};
class B : public A
{
public:
	B()
	{
		A::A();
		printf("bbbb\n");
	}
	~B()
	{
		A::~A();
		printf("~~~~bbb\n");
	}
};
void main(void)
{
	B c;
}

接下来看一下调用了父类的什么方法?

bool Layer::init()
{
    bool ret = false;
    do 
    {        
        Director * director;
        CC_BREAK_IF(!(director = Director::getInstance()));
        this->setContentSize(director->getWinSize());
        // success
        ret = true;
    } while(0);
    return ret;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值