关于VC++中用void修饰函数的返回值和无返回值的问题~高手讲解下 感激不尽
关于VOID 修饰函数的返回值和函数无返回值的问题我查看了好基本书,自己也在VC++6.0上试了试,可是还是有点没弄太明白麻烦高手们给详细讲解下 小弟我感激不尽。
void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。
同时有些书上写到了“如果函数没有返回值,那么应声明为void类型”
林锐博士《高质量C/C++编程》中提到:“C++语言有很严格的类型安全检查,不允许上述情况(指函数不加类型声明)发生”。因此,为了避免混乱,我们在编写C/C++程序时,对于任何函数都必须一个不漏地指定其类型。如果函数没有返回值,一定要声明为void类型。
以上这些内容都是书上写到的,猛一看貌似写的很清楚,很容易理解,但是孙鑫的<VC++深入详解> 中再将构造函数的时候,说构造函数无返回值,若果如上面所说的 无返回值等价于void 那么为什么在VC++6.0中给构造函数前加上void 编译会出错??是编译器的原因?还是上面的解释不完全正确??同时我又在vc++6.0 中有以下的几种代码:
1)
class Point
{
public:
int x;
int y;
output()
{
cout<<x<<endl<<y<<endl;
return ;
}
}; //编译出错。01.cpp(11) :warning C4183: 'output': member function definition looks like a ctor, but name does not match enclosing class
01.cpp(10) : error C2561: 'output' : function must return a value
2class Point
{
public:
int x;
int y;
void output()
{
cout<<x<<endl<<y<<endl;
return ;
}
};//编译无措,也无警告
3)
f()
{
return;
}//编译无措,只有1个警告。01.cpp(14) : warning C4508: 'f' : function should return a value; 'void' return type assumed
4)
void f()
{
return;
}// 无措无警告。
第1和第3种区别只是1个在类的定义中,1个在函数的定义中,为什么类中出错而函数中不出错?本人英语比较差,查看了MSDN没看明白什么意思,所以请教各位大侠们,不干盲目的相信中文版的书籍,因为我在学习C语言的时候就遇到过好多课本都将const解释为常量,但事实确不是,只能理解为只读。所以在这里请教下大侠们讲解下 void 感激不尽!3Q