| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 659 人关注过本帖
标题:关于初始化
只看楼主 加入收藏
心手2012
Rank: 2
等 级:论坛游民
帖 子:41
专家分:14
注 册:2012-3-15
结帖率:100%
收藏
已结贴  问题点数:2 回复次数:11 
关于初始化
class xxx
{
   char *name;
};
对于这个类,如何用Bob将名字初始化,我用了很多方式,都出错。请大家多提提建议
搜索更多相关主题的帖子: class 如何 
2012-03-26 23:36
骆彬彬
Rank: 2
等 级:论坛游民
帖 子:10
专家分:43
注 册:2012-3-13
收藏
得分:2 
这是动态分配的
#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];
    }
};
2012-03-27 12:15
心手2012
Rank: 2
等 级:论坛游民
帖 子:41
专家分:14
注 册:2012-3-15
收藏
得分:0 
回复 2楼 骆彬彬
那输出时应该怎么操作呢?我刚试了下,执行时弹出了错误警告。我是按cout<<name<<endl;输出的,但就是出错

[ 本帖最后由 心手2012 于 2012-3-27 13:09 编辑 ]
2012-03-27 13:02
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
默认数据成员为私有,
#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;
}
};

我们都在路上。。。。。
2012-03-27 14:18
心手2012
Rank: 2
等 级:论坛游民
帖 子:41
专家分:14
注 册:2012-3-15
收藏
得分:0 
回复 4楼 hellovfp
好像只有类中的函数才能访问吧。我就是这样写的,但执行时就弹出一个类似警告的窗口。但是如果是从键盘获取的话就可以打印,难道是编译器的问题?我用的是VC6.0。
2012-03-27 15:18
Caesoiar
Rank: 2
等 级:论坛游民
帖 子:19
专家分:42
注 册:2012-3-19
收藏
得分:0 
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,应该只有成员函数才能访问。
2012-03-27 19:16
心手2012
Rank: 2
等 级:论坛游民
帖 子:41
专家分:14
注 册:2012-3-15
收藏
得分:0 
回复 6楼 Caesoiar
我用了他动态分配的那个,静态的没仔细看。经你这么一分析,好像确实有点问题。
2012-03-27 22:10
yhmm
Rank: 2
等 级:论坛游民
帖 子:22
专家分:72
注 册:2012-2-27
收藏
得分:0 
要在类中初始化的,最好是静态变量,不然都放在构造函数中去初始化


                      捷建软件开发互助平台
2012-03-28 10:08
yhmm
Rank: 2
等 级:论坛游民
帖 子:22
专家分:72
注 册:2012-2-27
收藏
得分:0 
memcpy
而且要先开辟内存
name = new char[nlen];
strcpy(name,str,nlen);


                      捷建软件开发互助平台
2012-03-28 10:08
心手2012
Rank: 2
等 级:论坛游民
帖 子:41
专家分:14
注 册:2012-3-15
收藏
得分:0 
回复 6楼 Caesoiar
#include<iostream>
#include<string>
using namespace std;
class X{char *name;   
    X(){
        char a[20]="Bob";   
        name=a;         
    }
};
//我试过了,这样是可以的

2012-03-28 12:59
快速回复:关于初始化
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012887 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved