实现一个类a,在a中有两个私有的整型变量a和b,定义构造函数对a和b进行初始化,并实现成员函数geta()取得a的值和getb()取b的值。实现类b从a继承,覆盖geta(),使其返回a的2倍。主函数
时间: 2023-05-01 21:05:43 浏览: 73
这道题目的意思是实现一个函数a,在a中有两个私有的整型变量a和b,定义构造函数对a和b进行初始化,并实现成员函数geta()和getb(),分别取得a和b的值。实现类b继承a,覆盖geta()函数()使其返回a的两倍。主函数中要调用geta()和getb()函数。
相关问题
定义一个mystring类,实现两个字符串相加。要求定义类的数据成员为字符指针实现深
定义一个MyString类,实现两个字符串相加。在该类中,我们将使用字符指针来实现字符串的深拷贝。
首先,我们需要在类的私有成员中定义一个字符指针来表示字符串。我们可以将其命名为`str`。此外,我们还可以定义一个整型成员变量`len`来表示字符串的长度。
接下来,我们可以构造一个默认构造函数,用来初始化字符串为空字符串并将长度设置为0。另外,我们还可以构造一个带参构造函数,用来初始化字符串并计算长度。
接着,我们需要实现一个字符串相加的成员函数`stringAdd`。该函数接收一个参数,即待相加的字符串。首先,我们需要动态分配一个大小适当的内存空间来存储两个字符串的结果。然后,我们可以使用`strcpy`函数将第一个字符串拷贝到结果字符串中。接着,我们使用`strcat`函数将第二个字符串拼接到结果字符串之后。最后,我们返回结果字符串。
由于我们使用了字符指针来实现字符串的深拷贝,因此在类的析构函数中,我们需要释放掉动态分配的内存空间,以避免内存泄漏。
最后,我们可以在类的外部使用该类来实现字符串相加的功能。
下面是一个示例代码:
```cpp
#include <iostream>
#include <cstring>
class MyString {
private:
char* str;
int len;
public:
MyString() {
str = new char[1];
str[0] = '\0';
len = 0;
}
MyString(const char* s) {
len = strlen(s);
str = new char[len + 1];
strcpy(str, s);
}
~MyString() {
delete[] str;
}
char* stringAdd(const MyString& s) {
char* result = new char[len + s.len + 1];
strcpy(result, str);
strcat(result, s.str);
return result;
}
};
int main() {
MyString s1("Hello");
MyString s2(" World");
char* result = s1.stringAdd(s2);
std::cout << result << std::endl;
delete[] result;
return 0;
}
```
这样,我们就定义了一个MyString类,可以实现两个字符串的相加操作,并通过字符指针实现了字符串的深拷贝。
2.用户自定义点类型,其中包含一个单个长整型参数的构造函数,实现自定义点类型 变量与一个整型常量的算术运算。的C++代码
以下是实现自定义点类型变量与一个整型常量的算术运算的C++代码示例:
```c++
#include<iostream>
using namespace std;
class Point {
private:
long int x;
long int y;
public:
Point(long int x = 0, long int y = 0) {
this->x = x;
this->y = y;
}
Point operator+(int num) {
return Point(x + num, y + num);
}
void display() {
cout << "(" << x << ", " << y << ")" << endl;
}
};
int main() {
Point p(1, 2);
p.display(); // 输出 (1, 2)
Point q = p + 3;
q.display(); // 输出 (4, 5)
return 0;
}
```
在上面的代码中,我们定义了一个自定义点类型 `Point`,包含了两个 `long int` 类型的私有成员变量 `x` 和 `y`,并且实现了一个带有默认参数的构造函数,可以用于初始化对象的 `x` 和 `y` 值。
接着,我们重载了 `+` 运算符,使其能够让 `Point` 类型的对象与一个整型常量相加,并返回一个新的 `Point` 对象。在 `operator+` 函数中,我们将原有的 `x` 和 `y` 值分别加上了输入的整型常量 `num`,并返回了一个新的 `Point` 对象。
最后,在 `main` 函数中,我们创建了一个 `Point` 类型的对象 `p`,并将其初始化为 `(1, 2)`。然后,我们调用了对象 `p` 的 `display` 函数,输出了其坐标值。
接着,我们创建了一个新的 `Point` 类型的对象 `q`,并将其初始化为 `p + 3`,即将对象 `p` 与整型常量 `3` 相加。由于我们已经重载了 `+` 运算符,所以这个加法操作是合法的。最后,我们调用了对象 `q` 的 `display` 函数,输出了其坐标值 `(4, 5)`。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)