C++练习 | 运算符重载练习(字符串相关)
#include <iostream>
#include <cmath>
#include <cstring>
#include <string>
#include <iomanip>
using namespace std;
class String
{
private:
char *s;
public:
String()
{
s=new char[];
}
String(const char *t)
{
s=new char[];
strcpy(s,t);
}
String(const String &t)
{
s=new char[];
strcpy(s,t.s);
}
~String()
{
delete []s;
}
String & operator=(const char *t)
{
strcpy(this->s,t);
return *this;
}
String & operator=(const String &t)
{
this->s=t.s;
return *this;
}
String operator+(const char *t)
{
char *t1=nullptr;
strcpy(t1,this->s);
strcat(t1,t);
return t1;
}
String operator+(const String &t)
{
char *t1 = nullptr;
strcpy(t1,this->s);
strcat(t1,t.s);
return t1;
}
String & operator+=(const char *t)
{
strcat(this->s,t);
return *this;
}
String & operator+=(const String &t)
{
strcat(this->s,t.s);
return *this;
}
friend istream & operator>>(istream & is, String &t1)
{
is>>t1.s;
return is;
}
friend ostream & operator<<(ostream & os, String &t2)
{
os<<t2.s;
return os;
}
friend bool operator==(const String &t1, const char *t2)
{
if(strcmp(t1.s,t2))
return ;
else
return ;
}
friend bool operator==(const String &t1, const String &t2)
{
if(strcmp(t1.s,t2.s))
return ;
else
return ;
}
friend bool operator!=(const String &t1, const char *t2)
{
return strcmp(t1.s,t2);
}
friend bool operator!=(const String &t1, const String &t2)
{
return strcmp(t1.s,t2.s);
}
};
int main()
{
String s;
s += "hello";
cout<<s<<endl;
String s1("String1");
String s2("copy of ");
s2 += "String1";
cout << s1 << "\n" << s2 << endl;
String s3;
cin >> s3;
cout << s3 << endl;
String s4("String4"), s5(s4);
cout << (s5 == s4) << endl;
cout << (s5 != s4) << endl;
String s6("End of "), s7("my string.");
s6 += s7;
cout << s6 << endl;
return ;
}
C++练习 | 运算符重载练习(字符串相关)的更多相关文章
- C++学习6-面向对象编程基础(运算符重载、类的派生与继承、命名空间)
运算符重载 重载的运算符是具有特殊名字的函数:它们的名字由关键字operator和其后要定义的运算符号共同组成.重载的运算符是遵循函数重载的选择原则,根据不同类型或不同参数来选择不同的重载运算符. 运 ...
- 编码实现字符串类CNString实现运算符重载
题目描述: 编码实现字符串类CNString,该类有默认构造函数.类的拷贝函数.类的析构函数及运算符重载,需实现以下"="运算符."+"运算."[]& ...
- C++编写字符串类CNString,该类有默认构造函数、类的拷贝函数、类的析构函数及运算符重载
编码实现字符串类CNString,该类有默认构造函数.类的拷贝函数.类的析构函数及运算符重载,需实现以下“=”运算符.“+”运算.“[]”运算符.“<”运算符及“>”运算符及“==”运算符 ...
- C#基础加强(6)之引用相等与运算符重载
引用相等 介绍 在 C# 中可以通过 object.ReferenceEquals(obj1, obj2) 方法来判断两个变量引用的是不是同一个地址,如果是,那么就是引用相等. 引用相等是针对引用类型 ...
- C#高级编程笔记2016年10月12日 运算符重载
1.运算符重载:运算符重重载的关键是在对象上不能总是只调用方法或属性,有时还需要做一些其他工作,例如,对数值进行相加.相乘或逻辑操作等.例如,语句if(a==b).对于类,这个语句在默认状态下会比较引 ...
- C++运算符重载
C++运算符重载 基本知识 重载的运算符是具有特殊名字的函数,他们的名字由关键字operator和其后要定义的运算符号共同组成. 运算符可以重载为成员函数和非成员函数.当一个重载的运算符是成员函数时, ...
- c/c++面试题(6)运算符重载详解
1.操作符函数: 在特定条件下,编译器有能力把一个由操作数和操作符共同组成的表达式,解释为对 一个全局或成员函数的调用,该全局或成员函数被称为操作符函数.该全局或成员函数 被称为操作符函数.通过定义操 ...
- C# 类型运算符重载在类继承中的调用测试
这是一篇晦涩难懂的片面的研究 一,简单的继承层次 class CA { } class CB : CA{ } class CC : CB{ } } void Test(CA oa){//CATest ...
- C++运算符重载——重载特殊运算符
1.重载赋值运算符= 赋值运算符用于同类对象间的相互赋值.赋值运算符只能被重载为类的非静态成员函数,不能重载为友元函数和普通函数. 对于用户自定义的类而言,如果没有重载赋值运算符,那么C++编译器会为 ...
随机推荐
- .NET开源论坛MvcForum推荐
MvcForum算是Asp.net中开源论坛佼佼者之一.主要使用ASP.NET MVC 5 &Unity & Entity Framework 6,有较强的可撸性.是论坛开发者的不二之 ...
- Maven-pom-configuration
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- GetModuleFileName和获取应用程序当前目录
原文:http://www.cnblogs.com/xuemaxiongfeng/articles/2465544.html API函数GetModuleFileName():获得应用程序目录相对路径 ...
- CentOS 7.2mini版本下编译安装php7.0.10+MySQL5.7.14+Nginx1.10.1
一.安装前的准备工作 1.yum update #更新系统 1.1)vi /etc/selinux/config # 禁止SELINUX,设置SELINUX=disabled 2.yum in ...
- Jmeter————监控服务器性能
1. 下载jmeter插件 上面2个是jmeter插件,第3个要放在监控的服务器中. 2. 解压压缩包 找到解压包中的JAR文件,并拷贝到jmeter的lib/ext目录下,这里下载的1.4版本的插件 ...
- SQL server 和 Oracle 中列转行的小操作
Oracle: create table zjhis.mz_zdxx_zl as select a.sfsb, wm_concat(a.zdmc) as 诊断 from zjhis.mz_zdxx a ...
- In-app Billing 概述
这个文档讲解了In-app Billing的基础构成和功能,为了能够把In-app Billing功能添加到你的程序中,你需要很好的理解这些内容. 注意: 保证你的应用遵从发布地国家的相关法律. 举例 ...
- 企业级Nginx增加日志选项
日志介绍 目的:将用户的访问信息记录到指定的文件中由ngx_http_log_module模块负责 访问日志参数: access_log:指定日志文件的路径和使用何种日志格式记录日志 log_form ...
- 乘风破浪:LeetCode真题_015_3Sum
乘风破浪:LeetCode真题_015_3Sum 一.前言 关于集合的操作,也是编程最容易考试的问题,比如求集和中的3个元素使得它们的和为0,并且要求不重复出现,这样的问题该怎么样解决呢? 二.3Su ...
- Linux的ssh的known_host文件
在平时工作中,有时候需要SSH登陆到别的Linux主机上去,但有时候SSH登陆会被禁止,并弹出如下类似提示: WARNING: REMOTE HOST IDENTIFICATION HAS CHANG ...