注册 登录
编程论坛 C++教室

关于初始化

心手2012 发布于 2012-03-26 23:36, 659 次点击
class xxx
{
   char *name;
};
对于这个类,如何用Bob将名字初始化,我用了很多方式,都出错。请大家多提提建议
11 回复
#2
骆彬彬2012-03-27 12:15
这是动态分配的
#include<iostream>
#include<string>
using namespace std;
class X{
    char *name;
    C(){
    name=new char[20];
    strcpy(name,"Bob");
}
};
这是静态分配的
#include<iostream>
#include<string>
using namespace std;
class X{char *name;   
    X(){
        char a[20]="Bob";
        name=&a[20];
    }
};
#3
心手20122012-03-27 13:02
回复 2楼 骆彬彬
那输出时应该怎么操作呢?我刚试了下,执行时弹出了错误警告。我是按cout<<name<<endl;输出的,但就是出错

[ 本帖最后由 心手2012 于 2012-3-27 13:09 编辑 ]
#4
hellovfp2012-03-27 14:18
默认数据成员为私有,
#include<iostream>
#include<string>
using namespace std;
class X{
    char *name;
    public:
    C(){
    name=new char[20];
    strcpy(name,"Bob");
}

void print(void) //你可以添加一个函数来输出
{
    cout << name << endl;
}
};
#5
心手20122012-03-27 15:18
回复 4楼 hellovfp
好像只有类中的函数才能访问吧。我就是这样写的,但执行时就弹出一个类似警告的窗口。但是如果是从键盘获取的话就可以打印,难道是编译器的问题?我用的是VC6.0。
#6
Caesoiar2012-03-27 19:16
2L这个是错误的:
程序代码:
//这是静态分配的
#include<iostream>
#include<string>
using namespace std;
class X{char *name;   
    X(){
        char a[20]="Bob";    // 这里把函数内声明的a的地址给了name。构造函数退出后这个地址已是无效的。
        name=&a[20];         // 而且撇开上面一点不谈这里也应该是&a[0]或a而不是&a[20],这不仅逻辑不对而且访问也越界了
    }
};

另外楼主是对的,这里的name默认为private,应该只有成员函数才能访问。
#7
心手20122012-03-27 22:10
回复 6楼 Caesoiar
我用了他动态分配的那个,静态的没仔细看。经你这么一分析,好像确实有点问题。
#8
yhmm2012-03-28 10:08
要在类中初始化的,最好是静态变量,不然都放在构造函数中去初始化

#9
yhmm2012-03-28 10:08
memcpy
而且要先开辟内存
name = new char[nlen];
strcpy(name,str,nlen);

#10
心手20122012-03-28 12:59
回复 6楼 Caesoiar
#include<iostream>
#include<string>
using namespace std;
class X{char *name;   
    X(){
        char a[20]="Bob";   
        name=a;         
    }
};
//我试过了,这样是可以的

#11
czyhzc2012-03-28 15:48
回复 10楼 心手2012
这样肯定是可以的,name=a;这个a == &a[0];
#12
rjsp2012-03-28 16:23
以下是引用心手2012在2012-3-28 12:59:34的发言:

#include
#include
using namespace std;
class X{char *name;   
    X(){
        char a[20]="Bob";   
        name=a;         
    }
};
//我试过了,这样是可以的
可以个P呀,name指向一个局部变量
1