none
C++代码,请高手帮忙看下哪里错了 RRS feed

  • 问题

  • #include<iostream>
    #include<string>
    using namespace std;
    class Student
    {
    private:
     char name[12];
     long id;
     char sex;
     int age;
    public:
     Student (char *p,long id,char sex,int age);
      void print();
    };
    Student::Student(char *p,long id,char sex,int age)
    { strcpy(name,p);
    this->id=id;
    this->sex=sex;
    this->age=age;
    }
    void Student::print()
    {cout<<"姓名="<<name<<'\t';
    cout<<"学号="<<id<<'\t';
    if(sex=='f'||sex=='F')
     cout<<"性别=女\t";
    else
     cout<<"性别=男\t";
    cout<<"年龄="<<age<<endl;
    }
    void main()
    {Student Stu("wang",0640404,'F',21);
    Stu.print();
    }
    2012年4月2日 7:40

全部回复

  • 将void main()改为int main()后运行成功

    C++98 中定义了如下两种 main 函数的定义方式:

                      int main( )

                      int main( int argc, char *argv[] )

    (参考资料:ISO/IEC 14882(1998-9-01)Programming languages — C++ 3.6 Start and termination)

            int main( ) 等同于 C99 中的 int main( void ) ;int main( int argc, char *argv[] ) 的用法也和 C99 中定义的一样。同样,main 函数的返回值类型也必须是int。如果main函数的末尾没写return语句,C++98 规定编译器要自动在生成的目标文件中加入 return 0; 。同样,vc6 也不支持这个特性,但是 g++3.2(Linux 下的 C++ 编译器)支持。

    关于 void main

            在 C 和 C++ 中,不接收任何参数也不返回任何信息的函数原型为“void foo(void);”。可能正是因为这个,所以很多人都误认为如果不需要程序返回值时可以把main函数定义成void main(void) 。然而这是错误的!main 函数的返回值应该定义为 int 类型,C 和 C++ 标准中都是这样规定的。虽然在一些编译器中,void main 可以通过编译(如 vc6),但并非所有编译器都支持 void main ,因为标准中从来没有定义过 void main 。g++3.2 中如果 main 函数的返回值不是 int 类型,就根本通不过编译。而 gcc3.2 则会发出警告。所以,如果你想你的程序拥有很好的可移植性,请一定要用 int main .

    2012年4月3日 8:27