c++带参构造函数怎么初始化数据成员?

classPerson{char*Name;public:Person(){};Person(char*name);voidPrintName();};Person::P... classPerson
{
char *Name;
public:
Person(){};
Person( char *name );
voidPrintName();
};
Person::Person( char *name )
{
// 请补充完整
}
展开
 我来答
hwd0312
2015-10-24 · TA获得超过4336个赞
知道小有建树答主
回答量:1043
采纳率:100%
帮助的人:162万
展开全部

带参数的构造函数可以传递参数区初始化类的数据成员。

构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。

示例:

#include <iostream>
using namespace std;
class time
{
public:
time(int mHour, int mMinute, int mSec)//constructor.构造函数
{
hour=mHour;
minute=mMinute;
sec=mSec;
}
void show_time();
private:
int hour,minute,sec;
};
int main()
{
class time t1(12,11,50);//调用构造函数
t1.show_time();
return 0;
}
void time::show_time()
{
cout<<hour<<":"<<minute<<":"<<sec<<endl;
}

结果:

12:11:50
Mathilda64
2013-05-10 · 超过17用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:48.3万
展开全部
应该是:
Name=name;
即把构造函数中的参数传递给类的私有成员:char *Name,;
这样,在主函数中
int main()
{
Person p("bob");//会调用Person类的带参构造函数,将“bob”作为实参传入,作为p对象的Name

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
花花浪客
2013-05-10 · TA获得超过2069个赞
知道小有建树答主
回答量:792
采纳率:100%
帮助的人:697万
展开全部

Name在构造函数分配内存,赋值传入字符串,用完后在析构里要记得回收内存

Person::Person( char *name )
{
if (name)
{
Name = new char[strlen(name) + 1];
strcpy(Name, name);
}
else
{
Name = 0;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fup_86
2013-05-10 · TA获得超过216个赞
知道小有建树答主
回答量:263
采纳率:100%
帮助的人:99.6万
展开全部
Person::Person(char *name){
    Name = new char[stelen(name)+1];//申请空间
    strcpy(Name,name);
}
再给你写个析构把,自己申请的空间必须自己释放掉。
Person::~Person(){
    delete Name;
}
没编译,你试下不知道有没有问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2013-05-10 · TA获得超过380个赞
知道小有建树答主
回答量:618
采纳率:50%
帮助的人:223万
展开全部
classPerson
{
char *Name;
public:
Person(){};
Person( char *name );
voidPrintName();
};
Person::Person( char *name )
{
// 请补充完整
name=Name;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式