带有字符串(使用char数组)参数的构造函数
Constructor with string (using char array) parameter
只是为了使每个人都知道。i 必须使用char数组进行字符串,这是家庭作业,必须这样做。另外类是在purporse上进行的。
我应该通过我的鱼类读一条鱼的名字,这是动物类的子类。如果输入长度大于0,则我将使用Char Array参数运行构造函数,并更新Fish Inside Fish类。如果没有,我将在没有参数(FISH((构造函数(的情况下运行构造函数。
我的问题:
-
现在,它使我可以选择在输入中写入,我这样做 - 它崩溃了。这是引起它的鱼类物体,但不知道为什么。怎么来?
-
我将如何将我的数据传输到鱼类数据中的"渔名"中,并在动物类中"名称"?
所以这就是我到目前为止所做的,但是只有在输入后才崩溃。 #包括使用名称空间std;
#include <iostream>
using namespace std;
class Animal {
private:
char* name;
public:
Animal() { strcpy(name, ""); } // Constructors that set name to nothing
void writeName() { cout << name; } // Function to read an animal's name
};
class Fish : public Animal {
private:
char* fishname;
public:
Fish() {}
Fish(const char* name) { strcpy(fishname, name); }
};
int main() {
char fishname[20];
cout << "Read fish's name: "; cin.ignore();
cin.getline(fishname, 20);
if(strlen(fishname) > 0) Fish f1(fishname);
else Fish f1;
return 0;
}
关于您可以做的最好的
,缺乏实现STD :: String的许多功能是使用固定大小的char数组。这不是不是一个好习惯。我通常不会这样做,但我会怜悯。
#include <iostream>
#include <cassert>
using namespace std; // NEVER write this in a header file. Just saying.
class Animal {
public:
static const int max_name = 128;
Animal() {
name[0] = 0;
}
void writeName() { cout << name; } // Function to read an animal's name
private:
char name[max_name];
};
class Fish : public Animal {
private:
char fishname[Animal::max_name];
public:
Fish() {
fishname[0] = 0;
}
Fish(const char* name) {
assert(strlen(name) < Animal::max_name);
strcpy(fishname, name);
}
};
相关文章:
- C++:使用运算符 = 调用多参数构造函数
- 通过零参数构造函数创建的 glm::mat4 应该包含哪些值?
- 好奇的混合与可变参数构造函数
- 具有默认值的单个参数构造函数是否与默认构造函数相同?
- 为什么我们需要创建一个单参数构造函数来使用临时的无名称对象
- 在可变参数构造函数中初始化常量数组
- C++ 显式多参数构造函数歧义
- 零一参数构造函数
- 可变参数构造函数中的 SFINAE
- 当没有显式关键字与单参数构造函数一起使用时,编译器可以发出警告
- 可变参数类模板和可变参数构造函数
- 确保模板参数类型与其可变参数构造函数的类型匹配
- C++默认参数构造函数与内联初始化优先级
- 如何在 c++ 中将包含复制构造函数的类的参数构造函数称为私有?
- 自动存储中没有无参数构造函数的类对象和异常
- 警告:用两个参数构造函数返回对象时,表达结果未使用
- 如何在C++中调用无参数构造函数
- 在 c++ 中具有多个参数构造函数的模板类存在问题
- 可变参数构造函数优先于用户提供的移动构造函数,除非默认
- 如何从可变参数构造函数参数构造任何对象?