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 )
{
// 请补充完整
} 展开
{
char *Name;
public:
Person(){};
Person( char *name );
voidPrintName();
};
Person::Person( char *name )
{
// 请补充完整
} 展开
6个回答
展开全部
带参数的构造函数可以传递参数区初始化类的数据成员。
构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与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
展开全部
应该是:
Name=name;
即把构造函数中的参数传递给类的私有成员:char *Name,;
这样,在主函数中
int main()
{
Person p("bob");//会调用Person类的带参构造函数,将“bob”作为实参传入,作为p对象的Name
}
Name=name;
即把构造函数中的参数传递给类的私有成员:char *Name,;
这样,在主函数中
int main()
{
Person p("bob");//会调用Person类的带参构造函数,将“bob”作为实参传入,作为p对象的Name
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Name在构造函数分配内存,赋值传入字符串,用完后在析构里要记得回收内存
Person::Person( char *name )
{
if (name)
{
Name = new char[strlen(name) + 1];
strcpy(Name, name);
}
else
{
Name = 0;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Person::Person(char *name){
Name = new char[stelen(name)+1];//申请空间
strcpy(Name,name);
}
再给你写个析构把,自己申请的空间必须自己释放掉。
Person::~Person(){
delete Name;
}
没编译,你试下不知道有没有问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
classPerson
{
char *Name;
public:
Person(){};
Person( char *name );
voidPrintName();
};
Person::Person( char *name )
{
// 请补充完整
name=Name;
}
{
char *Name;
public:
Person(){};
Person( char *name );
voidPrintName();
};
Person::Person( char *name )
{
// 请补充完整
name=Name;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询