C++语言基础 例程 重载双目运算符

简介: 贺老师的教学链接  本课讲解String类运算符重载函数#include<iostream>#include<cstring>using namespace std;class String{public: String( ){p=NULL;} String(char *str); friend bool operator&g

贺老师的教学链接  本课讲解


String类运算符重载函数

#include<iostream>
#include<cstring>
using namespace std;
class String
{
public:
    String( ){p=NULL;}
    String(char *str);
    friend bool operator>(String &s1, String &s2);
    friend bool operator<(String &s1, String &s2);
    friend bool operator==(String &s1, String &s2);
        friend bool operator>=(String &s1, String &s2);
    friend bool operator<=(String &s1, String &s2);
    friend bool operator!=(String &s1, String &s2);
    void display( );
private:
    char *p;
};
String::String(char *str)
{
    p = new char[strlen(str)+1];
    strcpy(p, str);
}
 
void String::display( )
{
    cout << p;
}
 
bool operator>(String &s1,String &s2)
{
    if(strcmp(s1.p,s2.p)>0)
        return true;
    else
        return false;
}
 
bool operator<(String &s1,String &s2)
{
    if(strcmp(s1.p,s2.p)<0)
        return true;
    else
        return false;
}
 
bool operator==(String &s1,String &s2)
{
    return !((s1>s2)||(s1<s2));
}
 
bool operator>=(String &s1,String &s2)
{
    return !(s1<s2);
}
 
bool operator<=(String &s1,String &s2)
{
    return !(s1>s2);
}
 
bool operator!=(String &s1,String &s2)
{
    return ((s1>s2)||(s1<s2));
}
 
void compare(String &s1,String &s2)
{
    if(s1>s2)
    {
        s1.display( );
        cout<<" > ";
        s2.display( );
    }
    else if(s1<s2)
    {
        s1.display( );
        cout<<" < ";
        s2.display( );
    }
    else if(s1==s2)
    {
        s1.display( );
        cout<<" = ";
        s2.display( );
    }
    cout<<endl;
}
 
int main( )
{
    String s1("Hello"),s2("Money"),s3("Girl"),s4("Hello");
    compare(s1,s2);
    compare(s2,s3);
    compare(s1,s4);
    return 0;
}



目录
相关文章
|
24天前
|
存储 C++
C++语言中指针变量int和取值操作ptr详细说明。
总结起来,在 C++ 中正确理解和运用 int 类型地址及其相关取值、设定等操纵至关重要且基础性强:定义 int 类型 pointer 需加星号;初始化 pointer 需配合 & 取址;读写 pointer 执向之处需配合 * 解引用操纵进行。
136 12
|
6月前
|
存储 负载均衡 算法
基于 C++ 语言的迪杰斯特拉算法在局域网计算机管理中的应用剖析
在局域网计算机管理中,迪杰斯特拉算法用于优化网络路径、分配资源和定位故障节点,确保高效稳定的网络环境。该算法通过计算最短路径,提升数据传输速率与稳定性,实现负载均衡并快速排除故障。C++代码示例展示了其在网络模拟中的应用,为企业信息化建设提供有力支持。
164 15
|
6月前
|
存储 算法 安全
企业员工数据泄露防范策略:基于 C++ 语言的布隆过滤器算法剖析[如何防止员工泄密]
企业运营过程中,防范员工泄密是信息安全领域的核心议题。员工泄密可能致使企业核心数据、商业机密等关键资产的流失,进而给企业造成严重损失。为应对这一挑战,借助恰当的数据结构与算法成为强化信息防护的有效路径。本文专注于 C++ 语言中的布隆过滤器算法,深入探究其在防范员工泄密场景中的应用。
108 8
|
11月前
|
算法 C++
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
236 5
|
11月前
|
存储 编译器 C语言
深入计算机语言之C++:类与对象(上)
深入计算机语言之C++:类与对象(上)
|
11月前
|
存储 分布式计算 编译器
深入计算机语言之C++:C到C++的过度-2
深入计算机语言之C++:C到C++的过度-2
|
11月前
|
编译器 Linux C语言
深入计算机语言之C++:C到C++的过度-1
深入计算机语言之C++:C到C++的过度-1
118 0
|
7月前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
3月前
|
人工智能 机器人 编译器
c++模板初阶----函数模板与类模板
class 类模板名private://类内成员声明class Apublic:A(T val):a(val){}private:T a;return 0;运行结果:注意:类模板中的成员函数若是放在类外定义时,需要加模板参数列表。return 0;
83 0
|
3月前
|
存储 编译器 程序员
c++的类(附含explicit关键字,友元,内部类)
本文介绍了C++中类的核心概念与用法,涵盖封装、继承、多态三大特性。重点讲解了类的定义(`class`与`struct`)、访问限定符(`private`、`public`、`protected`)、类的作用域及成员函数的声明与定义分离。同时深入探讨了类的大小计算、`this`指针、默认成员函数(构造函数、析构函数、拷贝构造、赋值重载)以及运算符重载等内容。 文章还详细分析了`explicit`关键字的作用、静态成员(变量与函数)、友元(友元函数与友元类)的概念及其使用场景,并简要介绍了内部类的特性。
164 0