当前位置: 首页 > news >正文

岳阳网站建设 熊掌号wordpress创建搜索框

岳阳网站建设 熊掌号,wordpress创建搜索框,抖音小程序在哪里,网站本地建设实现了 MyString 类#xff0c;同时实现了运算符重载#xff0c;重载的运算符包括 、、、!、、、[] 等。 如果一个类重载了某个运算符#xff0c;那么对这个类的对象进行操作的时候便会使用类重载的运算符。比如下边代码 MyString 类中重载了 、…实现了 MyString 类同时实现了运算符重载重载的运算符包括 、、、!、、、[] 等。 如果一个类重载了某个运算符那么对这个类的对象进行操作的时候便会使用类重载的运算符。比如下边代码 MyString 类中重载了 、、、!、、 运算符那么使用这些运算符操作对象的时候便会使用对象重载之后的运算符。 (1) 、、、! ① 4 个运算符重载可以声明为友元函数也可以声明为类的成员函数 ② 声明友元函数时形参是两个声明为成员函数时形参是一个 ③ 对象 O1 和 O2 进行比较成员函数是 O1.operator (O1)友元函数是 operator (O1, O2) ④ 声明为成员函数时默认会带一个 this 指针*this 是左操作数 (2) 流操作符需要声明为友元函数不能声明为成员函数 (3) 不能创建新的运算符只能重载已有的运算符 如下代码、、、!、、 均声明为友元函数。 #include stdlib.h #include stdio.h #include string.h #include iostream #include stringclass MyString { public:MyString(); // 默认构造函数MyString(int n, char c); // 普通构造函数MyString(const char *str); // 普通构造函数MyString(const MyString str); // 拷贝构造函数MyString operator (char *str); // 重载 使用字符串赋值MyString operator (const MyString s); // 重载 使用对象赋值~MyString(); // 析构函数char operator[] (int i); // 重载 [], 实现数组操作const char operator[] (int i) const; // 重载 []事项数组操作对象为常量MyString operator (const MyString str); // 重载 与对象相加MyString operator (const char *str); // 重载 与字符串相加friend std::ostream operator (std::ostream out, MyString str); // 重载 实现输出流friend std::istream operator (std::istream in, MyString str); // 重载 实现输入流friend bool operator (const MyString left, const MyString right); // 重载 friend bool operator (const MyString left, const MyString right); // 重载 friend bool operator (const MyString left, const MyString right); // 重载 friend bool operator ! (const MyString left, const MyString right); // 重载 !char *GetData() const;// 对象被声明为 const那么这个对象调用的函数也需要是 const 类型int Size() const;private:int size;char *data nullptr; };MyString::MyString() {// 默认构造函数只包括一个字符 \0printf(MyString()\n);data new char[1];*data \0;size 0; }MyString::MyString(int n, char c) {printf(MyString(int n, char c), n %d, c %c\n, n, c);data new char[n 1];for (int i 0; i n; i) {*(data i) c;}*(data n) \0;size n; }MyString::MyString(const char *str) {printf(MyString(const char *str), str %s\n, str);if (str nullptr) {data new char[1];*data \0;size 0;} else {data new char[strlen(str) 1];strcpy(data, str);size strlen(str);} }MyString::MyString(const MyString str) {printf(MyString(const MyString str), str %s\n, str.GetData());data new char[str.size 1];strcpy(data, str.data);size str.size; }MyString MyString::operator (char *str) {printf(operator , MyString char *, str %s\n, str);if (data ! nullptr) {delete []data;}data new char[strlen(str) 1];strcpy(data, str);return *this; }MyStringMyString::operator (const MyString str) {printf(operator , MyString MyString, str %s\n, str.GetData());if (this str) {return *this;}if (data ! nullptr) {delete []data;}data new char[str.size 1];strcpy(data, str.data);return *this; }MyString::~MyString() {if (data ! nullptr) {delete []data;data nullptr;size 0;} }char MyString::operator [](int i) {return data[i]; }const char MyString::operator[] (int i) const {printf(operator [], const\n);return data[i]; }MyString MyString::operator (const MyString s) {printf(operator MyString, str %s\n, s.GetData());int length size s.size 1;char *tmp data;data new char[length];size length - 1;strcpy(data, tmp);strcat(data, s.data);delete []tmp;return *this; }MyString MyString::operator (const char *str) {printf(operator char *, str %s\n, str);if (str nullptr) {return *this;}int length size strlen(str) 1;char *tmp data;data new char[length];size length - 1;strcpy(data, tmp);strcat(data, str);delete []tmp;return *this; }int MyString::Size() const {return size; }char* MyString::GetData() const {return data; }std::ostream operator (std::ostream out, MyString str) {for (int i 0; i str.Size(); i) {out str[i] ;}return out; }std::istream operator (std::istream in, MyString str) {char p[50];in.getline(p, 50);str p;return in; }bool operator (const MyString left, const MyString right) {int i 0;while (left[i] ! \0 right[i] ! \0 left[i] right[i]) {i;}if (left[i] right[i]) {return true;}return false; }bool operator (const MyString left, const MyString right) {int i 0;while (left[i] ! \0 right[i] ! \0 left[i] right[i]) {i;}if (left[i] right[i]) {return true;}return false; }bool operator (const MyString left, const MyString right) {if (left.Size() ! right.Size()) {return false;}int i 0;while (left[i] ! \0 right[i] ! \0) {if (left[i] ! right[i]) {return false;}i;}return true; }bool operator ! (const MyString left, const MyString right) {if (left.Size() ! right.Size()) {return true;}int i 0;while (left[i] ! \0 right[i] ! \0) {if (left[i] ! right[i]) {return true;}i;}return false; }int main() {printf(构造 --------------------------------\n);MyString s1(3, a); // 默认构造函数MyString s2(s1); // 拷贝构造函数MyString s3(abcdefghijklmn); // 通过 char * 来构造函数MyString s4; // 空的字符串printf(\noperator --------------------------------\n);std::cout s1: s1 std::endl; // 输出字符串使用重载的运算符 std::cout s2: s2 std::endl;std::cout s3: s3 std::endl;std::cout s4: s4 std::endl;printf(\noperator --------------------------------\n);s4 s3; // 字符串赋值使用字符串对象赋值std::cout s4: s4 std::endl;s4 abcd; // 使用 char * 赋值std::cout s4: s4 std::endl;std::cout s4[2] s4[2] std::endl;printf(\noperator --------------------------------\n);s4 mmmm;std::cout s4: s4 std::endl;s4 s2;std::cout s4: s4 std::endl;printf(\noperator --------------------------------\n);std::cin s2;std::cout s2: s2 std::endl;printf(\n, , , ! --------------------------------\n);MyString t1 1234;MyString t2 1234;MyString t3 12345;MyString t4 12335;std::cout t1 t2 ? (t1 t2) std::endl;std::cout t1 t3 ? (t1 t3) std::endl;std::cout t1 t4 ? (t1 t4) std::endl;std::cout t1 ! t4 ? (t1 ! t4) std::endl;return 0; }如下代码、、、! 声明为成员函数当成员函数和友元函数同时存在时优先选用成员函数。 #include stdlib.h #include stdio.h #include string.h #include iostream #include stringclass MyString { public:MyString(); // 默认构造函数MyString(int n, char c); // 普通构造函数MyString(const char *str); // 普通构造函数MyString(const MyString str); // 拷贝构造函数MyString operator (char *str); // 重载 使用字符串赋值MyString operator (const MyString s); // 重载 使用对象赋值~MyString(); // 析构函数char operator[] (int i); // 重载 [], 实现数组操作const char operator[] (int i) const; // 重载 []事项数组操作对象为常量MyString operator (const MyString str); // 重载 与对象相加MyString operator (const char *str); // 重载 与字符串相加friend std::ostream operator (std::ostream out, MyString str); // 重载 实现输出流friend std::istream operator (std::istream in, MyString str); // 重载 实现输入流friend bool operator (const MyString left, const MyString right); // 重载 friend bool operator (const MyString left, const MyString right); // 重载 friend bool operator (const MyString left, const MyString right); // 重载 friend bool operator ! (const MyString left, const MyString right); // 重载 !bool operator (const MyString str); // 重载 bool operator (const MyString str); // 重载 bool operator (const MyString str); // 重载 bool operator ! (const MyString str); // 重载 !char *GetData() const;// 对象被声明为 const那么这个对象调用的函数也需要是 const 类型int Size() const;private:int size;char *data nullptr; };MyString::MyString() {// 默认构造函数只包括一个字符 \0printf(MyString()\n);data new char[1];*data \0;size 0; }MyString::MyString(int n, char c) {printf(MyString(int n, char c), n %d, c %c\n, n, c);data new char[n 1];for (int i 0; i n; i) {*(data i) c;}*(data n) \0;size n; }MyString::MyString(const char *str) {printf(MyString(const char *str), str %s\n, str);if (str nullptr) {data new char[1];*data \0;size 0;} else {data new char[strlen(str) 1];strcpy(data, str);size strlen(str);} }MyString::MyString(const MyString str) {printf(MyString(const MyString str), str %s\n, str.GetData());data new char[str.size 1];strcpy(data, str.data);size str.size; }MyString MyString::operator (char *str) {printf(operator , MyString char *, str %s\n, str);if (data ! nullptr) {delete []data;}data new char[strlen(str) 1];strcpy(data, str);return *this; }MyStringMyString::operator (const MyString str) {printf(operator , MyString MyString, str %s\n, str.GetData());if (this str) {return *this;}if (data ! nullptr) {delete []data;}data new char[str.size 1];strcpy(data, str.data);return *this; }MyString::~MyString() {if (data ! nullptr) {delete []data;data nullptr;size 0;} }char MyString::operator [](int i) {return data[i]; }const char MyString::operator[] (int i) const {return data[i]; }MyString MyString::operator (const MyString s) {printf(operator MyString, str %s\n, s.GetData());int length size s.size 1;char *tmp data;data new char[length];size length - 1;strcpy(data, tmp);strcat(data, s.data);delete []tmp;return *this; }MyString MyString::operator (const char *str) {printf(operator char *, str %s\n, str);if (str nullptr) {return *this;}int length size strlen(str) 1;char *tmp data;data new char[length];size length - 1;strcpy(data, tmp);strcat(data, str);delete []tmp;return *this; }int MyString::Size() const {return size; }char* MyString::GetData() const {return data; }std::ostream operator (std::ostream out, MyString str) {for (int i 0; i str.Size(); i) {out str[i] ;}return out; }std::istream operator (std::istream in, MyString str) {char p[50];in.getline(p, 50);str p;return in; }bool operator (const MyString left, const MyString right) {int i 0;while (left[i] ! \0 right[i] ! \0 left[i] right[i]) {i;}if (left[i] right[i]) {return true;}return false; }bool operator (const MyString left, const MyString right) {int i 0;while (left[i] ! \0 right[i] ! \0 left[i] right[i]) {i;}if (left[i] right[i]) {return true;}return false; }bool operator (const MyString left, const MyString right) {if (left.Size() ! right.Size()) {return false;}int i 0;while (left[i] ! \0 right[i] ! \0) {if (left[i] ! right[i]) {return false;}i;}return true; }bool operator ! (const MyString left, const MyString right) {if (left.Size() ! right.Size()) {return true;}int i 0;while (left[i] ! \0 right[i] ! \0) {if (left[i] ! right[i]) {return true;}i;}return false; }// bool MyString::operator (const MyString str) {int i 0;while (data[i] ! \0 str[i] ! \0 data[i] str[i]) {i;}if (data[i] str[i]) {return true;}return false; }bool MyString::operator (const MyString str) {int i 0;while (data[i] ! \0 str[i] ! \0 data[i] str[i]) {i;}if (data[i] str[i]) {return true;}return false; }bool MyString::operator (const MyString str) {if (size ! str.Size()) {return false;}int i 0;while (data[i] ! \0 str[i] ! \0) {if (data[i] ! str[i]) {return false;}i;}return true; }bool MyString::operator ! (const MyString str) {if (size ! str.Size()) {return true;}int i 0;while (data[i] ! \0 str[i] ! \0) {if (data[i] ! str[i]) {return true;}i;}return false; }int main() {printf(构造 --------------------------------\n);MyString s1(3, a); // 默认构造函数MyString s2(s1); // 拷贝构造函数MyString s3(abcdefghijklmn); // 通过 char * 来构造函数MyString s4; // 空的字符串printf(\noperator --------------------------------\n);std::cout s1: s1 std::endl; // 输出字符串使用重载的运算符 std::cout s2: s2 std::endl;std::cout s3: s3 std::endl;std::cout s4: s4 std::endl;printf(\noperator --------------------------------\n);s4 s3; // 字符串赋值使用字符串对象赋值std::cout s4: s4 std::endl;s4 abcd; // 使用 char * 赋值std::cout s4: s4 std::endl;std::cout s4[2] s4[2] std::endl;printf(\noperator --------------------------------\n);s4 mmmm;std::cout s4: s4 std::endl;s4 s2;std::cout s4: s4 std::endl;printf(\noperator --------------------------------\n);std::cin s2;std::cout s2: s2 std::endl;printf(\n, , , ! --------------------------------\n);MyString t1 1234;MyString t2 1234;MyString t3 12345;MyString t4 12335;std::cout t1 t2 ? (t1 t2) std::endl;std::cout t1 t3 ? (t1 t3) std::endl;std::cout t1 t4 ? (t1 t4) std::endl;std::cout t1 ! t4 ? (t1 ! t4) std::endl;return 0; }
http://www.w-s-a.com/news/506744/

相关文章:

  • 淮南公司网站建设如果做京东优惠卷的网站
  • 二手房网站平台怎么做项目工程监理公司网站建设方案
  • 秦皇岛做网站公司小说推广平台有哪些
  • php网站做分享到朋友圈天元建设集团有限公司信用代码
  • 邱县做网站在线免费图片编辑器
  • 网站备份网站做网站如何把支付宝微信吧
  • 做网站的怎么获取客户信息晋城建设局网站
  • 新开传奇网站发布网单职业wordpress建站网页无法运作
  • 海南省住房和城乡建设厅官方网站网站开发有哪些语言
  • 网站开发排期表免费网站建设策划
  • 飞沐网站设计江苏建设人才网证书查询
  • 网站优化的意义怎么帮商家推广赚钱
  • 安顺公司做网站福州建设发展集团有限公司网站
  • 普陀企业网站建设做散客机票的网站如何推广
  • 河北网站建设与制作建设宁波市分行的互联网网站
  • python做网站是不是特别慢百度推广基木鱼
  • 卖网站链接东营住房和城乡建设信息网
  • 网站后台如何上传ico图标单位建设网站需要的材料
  • 如何建淘客网站郑州做网站最好的公司
  • 连锁酒店网站方案o2o网站建设方案
  • 功能型网站响应式网站原理
  • 聊城建设网站骨干校 建设网站
  • 网站建设与管理是干嘛的中国新闻社是什么单位
  • 帮别人做视频剪辑的网站传业做微采商城网站
  • 设计一个网站开发方案宣传片制作企业
  • 新网站收录多少关键词免费一键网站
  • 网页制作与网站建设 在线作业手表网站制作照片
  • 电商网站开发技术与维护重庆建筑工程交易信息网
  • 人和马做的网站线上营销推广方式
  • 青海教育厅门户网站有赞商城