为了账号安全,请及时绑定邮箱和手机立即绑定

用c++编写程序。求一个数的最大公约数?

/ 猿问

用c++编写程序。求一个数的最大公约数?

MMTTMM 2019-05-28 10:06:01

用c++编写程序。求一个数的最大公约数


查看完整描述

3 回答

?
largeQ

1

2

3

4

5

6

7

8

9

10

11

int measure(int x, int y)  

{     

    int z = y;  

    while(x%y!=0)  

    {  

        z = x%y;  

        x = y;  

        y = z;    

    }  

    return z;  

}


查看完整回答
反对 回复 2019-06-01
?
慕森卡

可以这么理解:假设a,b都是一种类型,a is-a b,说明a类对象是b类对象,只不过是特殊的一种。比如说”飞机“是一种“交通工具”。对应到c++中就是继承关系。
a has-a b,说明a类对象具有若干b类对象作为其成员。比如“飞机”有”翅膀“。
私有继承实现has-a关系,一是从对象关系上来说是不合理的,写程序的人知道,但是看程序的人就会误会了。二是,用私有继承,比如a中私有继承了b,那么b的所有成员和函数在a中都是private,不能直接访问的了,会对后面的使用造成不方便。
以上是我的一点意见,欢迎探讨

查看完整回答
反对 回复 2019-06-01
?
慕勒3428872

一、类包含对象
这种关系的实现无非就是一个类是另外一个类的成员而已。
Class A
{
B b;
.......
}
其实这就是一个最简单的has-a的关系的实现。
二.、私有继承
c++还有另一种实现has-a关系的途径----私有继承。使用私有继承,基类的公有成员和保护成员都将成为派生类的私有成员。这意味着基类方法将不会成为派生对象公有接口的一部分,但可以在派生类的成员函数中使用它们。
使用公有继承,基类的公有方法将成为派生类的公有方法。简而言之,派生类将继承基类的接口,这是is-a关系的一部分。使用私有继承,基类的公有方法将成为派生类的私有方法。简而言之,派生类不能继承基类的接口。正如从被包含对象中看到的,这种不完全继承是has-a关系的一部分。
因此私有继承提供的特性与包含相同:获得实现,但不获得接口。所以,私有继承也可以用来实现has-a关系。
三、使用包含还是私有继承
由于既可以使用包含,也可以使用私有继承来建立has-a关系。大多数c++程序员倾向于前者。不过私有继承所提供的特性确实比包含多。例如,假设类包含保护成员,则这样的成员在派生类中是可用的,但在继承层次机构外是不可用的。如果使用组合奖这样的类保护在另一类中,则后者将不是排成类,而是位于继承层次结构之外,因此不能访问保护成员。但通过继承的到的将是派生类,因此他能够访问保护成员。
另一种需要使用私有继承的情况是需要重新定义虚函数。派生类可以重新定义虚函数,但包含类不能。使用私有继承,重新定义的函数将只能在类中使用,而不是公有的。

查看完整回答
反对 回复 2019-06-01

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信