C++函数的声明与定义问题谢谢

2024-12-21 19:02:08
推荐回答(2个)
回答1:

这个问题,你明白就行了,有些说法是变通的,并不太严格。在类中的Point (double a=0.0,double b=0.0);还是叫定义比较好,因为声明是指编译器要用某个函数,但还没有发现它的函数体,C/C++就提供了一个在使用前先声明一下的措施,而且与上述表达并不一样:应该是Point (double,double);。而在类中的Point (double a=0.0,double b=0.0);就是带形参默认值的函数头的定义——这里有这样一个变通:本来是连函数体都要在类里实现的,但为了阅读方便(函数体太长的话就不方便),又允许在类中只写个函数头,而在类外给予实现函数体,所以就容易费解。我认为叫定义不错且比较贴切。完全个人理解,供参考……

回答2:

掌握关键:
原先没有的,通过定义创建。从无到有。
原先已经有的,通过声明让当前或潜在使用人知晓其定义是怎样的。

一个类,通过定义创建,就是说明类是由哪些成员构成的。
成员确定之后,即使类的实体还没有实现,但是类的接口已经明确了,把类看成一个黑盒子,使用这个类的程序就可以单独编译了。
所以,把类看成一个功能体,在类这个层次,确定各成员就是定义类。
而各成员又是各个子功能体,再通过定义来实现子功能。
所以,在成员函数这个层次,形式为:“返回类型 函数名(形参表);”的,应该是声明。而具有函数体的那部分,明确了函数的具体功能,这才是定义。