在使用指针(C++)的类中定义构造函数
Defining constructors in a class that uses pointers (C++)
好吧,这是我在这个网站上的第一个问题,我对C++还很陌生。我正试图创建一类功能,将各种校园俱乐部的成员放入各自的俱乐部。我得到了这个类骨架,,但我不知道如何定义三个构造函数,尤其是如何使用参数中的变量。您几乎可以忽略除构造函数之外的所有公共函数。有什么想法吗?
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Club
{
public:
Club();
Club(Club &c);
Club(string cname);
void addMember(string name);
void removeMember(string name);
const string getClubName();
void loadClub();
const bool isMember(string name);
const string getAllMembers();
friend Club mergeClubs(Club& c1, Club& c2);
~Club();
private:
string *members;
int numMembers;
string clubName;
};
您有三个构造函数:默认的Club()
、复制构造函数Club(Club &c)
和第三个Club(string cname)
。
对于默认值,您必须决定私人成员的所有默认值是多少。
对于复制构造函数,您所需要做的就是将&c
中的所有内容复制到您自己的记录中。例如,你可以做:
numMembers = c.numMembers ;
对于第三个,你必须决定什么是cname
以及你应该如何处理它
对于复制构造函数,您确实需要做出一个棘手的决定。复制string * members;
意味着什么?你可能认为你可以只说members= c.members ;
,但如果原始Club
的大小被调整,副本将指向无效内存。
不使用字符串数组,只需使用向量,就不需要"numMembers"。
class Club
{
public:
...
void addMember(string name) { members.push_back(name); }
void removeMemeber(string name) { members.erase(std::remove(members.begin(), members.end(), name), members.end()); }
...
private:
vector<string> members;
string clubName;
};
相关文章:
- 具有自定义构造函数 (C++) 的类型的动态数组分配
- 当类成员参数具有相同的名称时,如何定义构造函数?
- C++定义构造函数使对象成为非 POD
- 请描述一下在 c++ 中在此类中定义构造函数的方式?
- 不为 emplace() 定义构造函数的解决方法
- 已定义构造函数的构造函数无法识别
- 在自定义构造函数中的堆上创建指针
- c++ 17 中结构自动定义构造函数的规则是什么?
- Python 错误:在 SWIG 生成的C++模板化代码模块中没有定义构造函数
- unique_ptr看不到派生类的自定义构造函数
- 两种类型的定义构造函数有什么区别?第一个使用":",第二个用大括号(如函数)定义它
- 为什么一个非平凡的成员需要为同一类中的匿名联合定义构造函数
- 为其成员根据模板基类存在的类定义构造函数
- 如何在派生类上具有默认行为,而不是重新定义构造函数
- 在结构中定义构造函数
- 将从基类继承的构造函数与自定义构造函数混合使用
- 如何在模板类外部定义构造函数
- C 需要使用自定义构造函数的帮助
- 可以联合包含具有用户定义构造函数的类的对象
- 具有用户定义构造函数的非聚合类的值初始化