2 summer wxx summer_WXX 于 2015.05.29 10:51 提问

请帮忙看看错误吧。。。
c++

#include
#include
using namespace std;
class Person
{
private:
char *name;
public:
Person(char *n1):name(n1){strcpy(name,n1);}
void PrintName() {cout<<"The name is:";}
};
class Student:public Person
{
private:
long int Number;
public:
Student(char *n2,long int n3):Person(n2) {Number=n3;}
void PrintInfo()
{
cout<<"The number is:";
}
};
int main()
{
Person a("张三");
cout<<a.PrintName<<endl;
Student b("张三",142180217);
cout<<b.PrintInfo<<endl;
return 0;
}

7个回答

caozhy
caozhy   Ds   Rxr 2015.05.29 11:41
已采纳
 #include<iostream>
#include<string>
using namespace std;
class Person
{
private:
    char *name;
public:
    Person(char *n1):name(n1){strcpy(name,n1);}
    void PrintName() {cout<<"The name is:" << name; }
};
class Student:public Person
{
private:
    long int Number;
public:
    Student(char *n2,long int n3):Person(n2) {Number=n3;}
    void PrintInfo()
    {
        cout<<"The number is:" << Number;
    }
};
int main()
{
        char ch[] = "张三";
    Person a(ch);
    a.PrintName();
        cout << endl;
    Student b(ch,142180217);
    b.PrintInfo();
        cout << endl;
    return 0;
}

lx624909677
lx624909677   Ds   Rxr 2015.05.29 10:53

name没有空间,怎么放数据?

91program
91program   Ds   Rxr 2015.05.29 11:14

name 没有分配内存空间,至少要 malloc 或 new 一下吧。

91program
91program PrintName 的代码,并没有实际输出任何变量!你应该是想要输出 name 吧? void PrintName() {cout<<"The name is:" << name;}
接近 3 年之前 回复
caozhy
caozhy   Ds   Rxr 2015.05.29 11:41

http://codepad.org/tDXOotfn

The name is:张三
The number is:142180217

u012377333
u012377333   Rxr 2015.05.29 11:48

char *name;
Person(char *n1):name(n1){strcpy(name,n1);}

很明显没有初始化指针,是不能直接使用的;
Person(char *n1):name(n1)
{
name = (char *)malloc(sizeof(char))
strcpy(name,n1);
}

a1193561652
a1193561652   Rxr 2015.05.29 11:56

好像name没有分配空间。

u010973206
u010973206   2015.05.29 13:01

name 没有分配内存空间,既然用了std,就把 char* 换成 std::string

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!