|
- #include <iostream>
- using namespace std;
- class location {
- private:
- [color=red] int x, y, val; //问题1[/color]
- public:
- void init (int=0, int=0);
- [color=red] void value_x (int val) {x=val;}; //问题2[/color]
- int value_x () {return x;}; //line 10
- void value_y (int val) {y=val;};
- int value_y () {return y;};
- };
- void location::init (int init_x, int init_y) {
- x=init_x;
- y=init_y;
- }
- int main () { //line 20
- location a, b;
- a.init();
- a.value_x(5);
- cout<<a.value_x()<<endl<<a.value_y()<<endl;
- b.init(6,2);
- b.value_y(4);
- cout<<b.value_x()<<endl<<b.value_y()<<endl;
- }
复制代码
问题一:
假如:
int x, y, val;
为int x, y;
就会出错,为什么?
void value_x (int val) {x=val;};
这句中不是有定义(int val)吗?
问题二:
谭浩强的《C语言程序设计》中说:
函数原型的一般形式为:
(1)函数类型 函数名 (参数类型1, 参数类型2......);
(2)函数类型 函数名 (参数类型1 参数名1, 参数类型2 参数名2......);
第(1)种形式是基本的形式。为了便于阅读程序,也允许在函数原型中加上参数名,就成了第(2)种形式。但编译系统下不检查参数名,因此参数名是什么都无所谓。
可我觉得并不是参数名是什么都无所谓。
比如说,如果
void value_x (int val) {x=val;};
这句为:
void value_x (int) {x=val;};
那效果就不同。
谢谢。 |
|