我有这个家庭作业,现在给我带来了很多麻烦。我的老师在课堂上很含糊,很难沟通。我会非常努力地在这里表达我的想法。这是作业:
(3 分)给定以下类头文件,为列出的每个访问器和修改器函数编写类的源代码。(注意函数如何列出它们的参数,在按引用传递和按值传递之间变化。)不要忘记注释您的代码 - 它很重要!
class Album { private: char * artist; // band or singer’s name char * title; // title of the album int year_released; // year the album is released char * record_label; // name of company produced album int num_songs; // number of songs on the album int num_minutes_long; // length (mins) of album char * genre; // genre of artist (eg, rock, pop, …) public: //constructors Album(); Album(char *& a, char *& t); //deconstructor ~Album(); //accessors and mutators bool set_artist(char * a); bool set_title(char * t); bool set_year_released(int value); bool set_record_label(char *& label); bool set_num_songs(int value); bool set_num_minutes_long(int value); bool set_genre(char * g); bool get_artist(char *& a); bool get_title(char *& t); int get_year_released(); bool get_record_label(char *& label); int get_num_songs(); int get_num_minutes_long(); bool get_genre(char *& g); };
这是我到目前为止的工作:
bool Album::set_artist(char * a)
{
*artist = a;
}
bool Album::set_title(char * t)
{
*title = t;
}
bool Album::set_year_released(int value)
{
year_released = value;
}
bool Album::set_record_label (char *& label)
{
*record_label = label;
}
bool Album::set_num_songs(int value)
{
num_songs = value;
}
bool Album::set_number_minutes_long(int value)
{
num_minutes_long = value;
}
bool Album::set_genre(char * g)
{
*genre = g;
}
bool Album::get_artist(char *& a)
{
return artist;
}
bool Album::get_title(char *& t)
{
return title;
}
int Album::get_year_released()
{
return year_released;
}
bool Album::get_record_label(char *& label)
{
return *record_label;
}
输入将是一个数组。
我的问题:
首先,我在正确的轨道上吗?
例如,当
(char * a)
用于函数时,这是传递 的地址,对a
吗?那么*artist=a;
改变a
指向的地址是什么?此外,当我期望 void 时,这些函数是 bool 的。为什么?
对于所有
set_xxx
函数,参数是*
... 但对于 set_record_label 它是*&
。这对我来说似乎是一个错误。那正确吗?*&
和*
as 参数有什么区别?
感谢您的时间。我知道这里有很多。