C++使用类来定义新类型
C++ Using Class to Define New Type
我现在正在开发操作系统。 但是,我必须为开发人员创建"字符串"类型。我尝试过 typedefs 和枚举,但它们都不符合我的需求。我想让类型字符串像Windows的 VB.Net 一样工作。喜欢这个:
string a
a = "Hello, "
a.CombineString ("World")
int a = a.NumberOfChars ()
所以我想出了这个(在 c++ 中)
class string {
char * value = NULL; //My Operating System's Kernel's Printf Function Uses Char Pointers
bool CompareString (char *);
int NumberOfChars () {return (!value);}
void CombineString (char *);
}
bool string::CompareString(char * string_to_compare_with) {
int return_prototype = 0;
return_prototype = strcmp(string::value, string_to_compare_with); //The strcmp () function returns 0 if the char*s are the same and 1 if different.
if(return_prototype == 0) {
return true;
} else {
return false;
}
}
void string::CombineString(char * string_to_add) {
value = strcpy(value, string_to_add);
}
int main() {
string a;
a.value = "Hello, ";
a.CombineString("World!!");
Printf(a);
}
这会在我的操作系统的控制台屏幕上打印字符串"Hello, World!!"。但我想去
string a = "Hello, ";
不
string a;
a.value = "Hello, ";
我该怎么办?
定义一个将const char*
作为参数的构造函数和一个复制构造函数应该这样做。有一个复制构造函数也意味着你需要一个复制赋值运算符和一个析构函数。您还应该决定您的对象是否承担字符串的所有权。在您的示例中 - a.value = "Hello, ";
- 只是使该成员指向该字符串文本。之后您将无法修改它 - 也许在那里制作副本?
但是,我必须指出<string>
中存在的现有std::string
实现。
我是简单的家伙。我现在正在开发一个名为"Windows"的操作系统。 它运行在自己的文件系统NTFS文件系统上,并支持用户模式,应用程序执行,内存管理和其他很棒的东西。
除了有一个复制构造函数,你还需要赋值运算符重载:
const string& operator=(const string& arg){
delete[] value;
value = new char[arg.NumberOfChars()+1];
CombineString(const_cast<char*>(arg));
return reinterpret_cast<string&>(*this);
}
string(const string& arg):value(NULL){
value = new char[arg.NumberOfChars()+1];
CombineString(arg);
return reinterpret_cast<string&>(*this);
}
相关文章:
- 有没有办法通过插入新类型名称而不是 int 来使用 2 位大小类型而不是 int?
- 在 C++17 中的每个实例化时生成一个新类型
- 使用 basic_string 声明新类型的字符串
- Visual C 新类型初始化
- C 通过Typedef定义新类型
- C 模板:返回新类型的正确方法
- 我如何将现有模板类部分分为新类型
- 每当C++调用函数时生成新类型
- 是否可以使用元编程将类型列表转换为对列表中每种类型具有特定隐式转换行为的新类型?
- 应替换现有类型,向其添加新类型
- C++,指向作为新类型的函数的指针
- 定义一个新类型并重载其运算符
- 在python中动态创建一个新类型
- 如何从模板类中的类型名传递创建新类型名
- 在函数返回值中定义一个新类型
- 如何在 MPI 中创建新类型
- 为什么要将变量类型 p 声明为新类型,而不是将其声明为类型 p
- C++使用类来定义新类型
- 用C++中的typedef来总结和定义一个具有两个函数的新类型
- 将新类型作为参数发送