在C++编程语言中,常量、指针、类的构造函数和析构函数以及字符串类的操作是基础知识的重要组成部分。让我们逐一深入理解这些概念。 1. 指针占用的内存大小: 在32位的win32 x86模式下,无论是普通指针、二级指针还是浮点数指针,它们都占用4个字节的内存。这是因为指针本质上是用来存储内存地址的,而32位系统中的地址宽度为32位,即4字节。 2. 数据类型的识别: - 常量1被视为整型(int)。 - 1.0被视为双精度浮点型(double)。 - "1"被视为字符常量(const char *),它实际上是一个指向字符数组的指针。 3. `sizeof`运算符的使用: - `sizeof(a)`返回数组a所占据的总字节数,对于包含10个short int的数组,结果是20(每个short int占2字节)。 - `sizeof(p)`返回指针p本身的大小,无论指针指向何种类型,在win32 x86环境下,指针都是4字节。 4. 构造函数与析构函数的重载: - 构造函数是可以重载的,因为我们可以根据需要定义不同的构造函数,只要参数列表不同即可。 - 析构函数不能被重载,因为析构函数必须有一个唯一的隐含参数`this`,表示对象自身的引用。 5. 类A的实例化和操作: - 这里展示了类A的构造函数、拷贝构造函数、赋值运算符、转换运算符以及析构函数的使用。执行结果涉及到对象创建、赋值、销毁的过程,以及类型转换。 6. 定义字符串类STRING: - STRING类内部包含了指向字符的指针,并提供了类似于C风格字符串的成员函数,如strlen()、strcmp()、strcpy()和strcat()。 - 需要实现的成员函数调用了C库中的相应函数,例如strlen()使用了`::strlen()`,strcmp()使用了`::strcmp()`,strcat()使用了`::strcat()`。 对于STRING类的成员函数,我们可以这样定义: ```cpp int STRING::strlen() const { return ::strlen(str); } int STRING::strcmp(const STRING &s) const { return ::strcmp(str, s.str); } STRING &STRING::strcat(const STRING &s) { int len = ::strlen(str); ::strcat(str, s.str); return *this; } STRING &STRING::strcpy(const STRING &s) { delete[] str; str = new char[strlen(s.str) + 1]; ::strcpy(str, s.str); return *this; } ``` 这些函数使用C库中的字符串处理函数来实现STRING类的功能,如计算字符串长度、比较字符串、拼接字符串以及复制字符串。注意,当进行字符串复制时,需要释放旧的内存并分配新的内存来保存复制的字符串。这确保了类成员函数的正确性和安全性。
- 粉丝: 70
- 资源: 313
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助