下面是使用C++實現的一個簡單的String類,包括私有成員std::string s用于存儲字符串數據,以及構造函數、拷貝構造函數、析構函數和賦值函數。此外,我還添加了一個命名空間MyNamespace來組織這個類。
#include <iostream>
#include <cstring>
namespace MyNamespace {
class String {
private:
std::string s; // 用于存儲字符串的私有成員
public:
// 構造函數
String(const char* str) : s(str) {}
// 拷貝構造函數
String(const String& other) : s(other.s) {}
// 析構函數
~String() {
// std::string的析構函數會自動清理資源
}
// 賦值函數
String& operator=(const String& other) {
if (this != &other) {
s = other.s;
}
return *this;
}
// 為了演示,添加一個打印函數
void print() const {
std::cout << s << std::endl;
}
};
int main() {
String str1("Hello, World!");
str1.print(); // 輸出: Hello, World!
String str2 = str1; // 調用拷貝構造函數
str2.print(); // 輸出: Hello, World!
String str3("Kimi");
str3 = str2; // 調用賦值函數
str3.print(); // 輸出: Hello, World!
return 0;
}
}
在這個實現中:
- 構造函數接收一個
const char*類型的參數,并將其傳遞給std::string的構造函數。 - 拷貝構造函數創建了一個新的
String對象,它是現有對象的副本。 - 析構函數目前沒有執行任何特殊操作,因為
std::string的析構函數會自動釋放其管理的內存。 - 賦值函數實現了深拷貝,并在必要時進行了自賦值檢查。
print函數用于輸出字符串內容,以驗證我們的String類是否按預期工作。
請注意,這個簡單的String類并沒有實現std::string類的全部功能,但它展示了如何使用std::string來管理字符串數據,并提供了基本的構造、拷貝構造、析構和賦值操作。在實際應用中,直接使用標準庫中的std::string通常是更好的選擇,因為它經過了優化和廣泛的測試。
浙公網安備 33010602011771號