日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

怎么说呢。留个纪念,关于字符串的重载

發布時間:2024/4/17 编程问答 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎么说呢。留个纪念,关于字符串的重载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

等號重載的時候,一要記得先釋放舊的內存!!!!!!!!!總忘記

MyString.h

#pragma once #include<iostream> using namespace std; class MyString { public:MyString();MyString(char *p);MyString(const MyString &m1);~MyString();friend ostream &operator<<(ostream &out, MyString &t1);friend istream &operator>>(ostream &in, MyString &t2);MyString &operator=(MyString & t3);void printF();MyString &operator=(char * t3);char & MyString::operator[](int i);int operator>(MyString &t5); public:char *p;int length; };

  MyString.cpp

#include "MyString.h" using namespace std;MyString::MyString() {length=0;this->p=new char [length +1]; }MyString::MyString(char *p) {if(this->p=NULL){this->length=0;this->p=NULL;}else{this->length=strlen(p);this->p=new char [length +1];strcpy(this->p,p);} } //MyString::MyString(char *p) //{ // if (this->p == NULL) // { // length = 0; // this->p = new char[length + 1]; // strcpy(this->p, ""); // } // else // { // this->length = strlen(p); // this->p = new char[length + 1]; // strcpy(this->p, p); // } //} MyString::MyString(const MyString &m1) {this->length=m1.length;this->p=new char [length +1];strcpy(this->p,m1.p); } MyString::~MyString() {if(p!=NULL){length=0;delete [] p;} } void MyString::printF() {cout<<this->p; }ostream & operator<<(ostream & out, MyString &t1) {out<<t1.p;return out; } istream &operator>>(istream &in, MyString &t2) {cin >> t2;//這句不理解啊return in; }//[] 的重載 cout<<a1<<endl; //a[i] char & MyString::operator[](int i) {return this->p[i]; } //等號的重載。a1=a2;a1=“sds”MyString &MyString::operator=(MyString & t3) {if(p!=NULL){delete [] p;length=0;}if(p=NULL){length=0;this->p=NULL;}else{this->length=t3.length;this->p=new char [length +1];strcpy(this->p,t3.p);}return *this;} //a1=“sds” MyString &MyString::operator=(char * t4) {if(p!=NULL){delete [] p;length=0;}if(p=NULL){length=0;this->p=NULL;}else{this->length=strlen(t4);this->p=new char[length +1];strcpy(p,t4);}return *this; }//a4>a1int MyString::operator>(MyString &t5){return strcmp(t5.p,this->p);}

  main.cpp

#include<iostream> #include"MyString.h" using namespace std; //構造函數要求 //MyString a; //MyString a(“dddd”); //MyString b = a; // //常用的操作符 //<< >> != == > < =//cout<<a1<<endl;int main() { MyString a; MyString a1("dddd"); //需要重載<<操作符 //[] 的重載 cout<<a1<<endl;//MyString b=a; /*for(int i=0;i<a1.length;i++) { cout<<a1[i]<<" "; } */ MyString a4="fsfsdf"; a4[2]='2'; cout<<a4[2]; cout<<a4;if(a4>a1) { cout<<"ok"; }system("pause");}

  

?

轉載于:https://www.cnblogs.com/xiaochige/p/6603357.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的怎么说呢。留个纪念,关于字符串的重载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。