关于C++构造函数的重载,高手请来O(∩_∩)O

来源:百度知道 编辑:UC知道 时间:2024/05/23 23:22:50
#include<iostream>
using namespace std;
class person
{
public:
person(char *p);
person();
~person();
private:
char name[20];
}
person::person(char *p)
{
strcpy(name,p);
}
person::~person()
{
cout<<"OK,析构函数以备调用\n";
}

int main()
{
person somebody("Alex");
person anybody;
somebody.~person();
anybody.~person();
system("PAUSE");
return 0;
}
请各位大侠帮忙解释一下为什么会出现编译错误呢?

error C2533: “person::{ctor}”: 构造函数不能有返回类型
error C2264: “person::person”: 函数定义或声明中有错误;未调用函数
一个在第13行,一个在第23行,谢谢大家了O(∩_∩)O
呵呵 真是醍醐灌顶···不好意思,刚学C++,谢谢雨落深山大哥了···O(∩_∩)O
同时也谢谢Bluewanderer 雨落讲得比较清楚点儿··

class person
{
public:
person(char *p);
person();
~person();
private:
char name[20];
}; // 这里你少了分号啦!!!!!

另外还有错误:

a.cpp: In constructor ‘person::person(char*)’:
a.cpp:14: 错误: ‘strcpy’在此作用域中尚未声明
a.cpp: In function ‘int main()’:
a.cpp:23: 警告: 不建议使用从字符串常量到‘char*’的转换
a.cpp:27: 错误: ‘system’在此作用域中尚未声明

加上头文件
#include <cstdlib>
#include <cstring>

还有

person::person(const char *p) 这里最好加上const
{
strcpy(name,p);
}

最后

person::person()没有定义这个构造函数

你的类定义没写分号

另外person::person()没定义。