关键词

运算符 重载 介绍

C++中不能重载的运算符及其特点介绍

在C++中,有一些运算符是不能重载的,它们分别是:.(点)、::(作用域解析符)、?:(条件运算符)、sizeof(大小)、.*(指针间接访问)和typeid(类型信息)。这些运算符不能重载的原因是它们与C++的语法有关,而不是算数运算符,重载它们可能会影响编译器的行为。

点运算符

点运算符用于访问类成员,它是一种特殊的访问运算符,不能被重载。它的左操作数是一个类的对象,右操作数是类成员的名称,它可以访问类的数据成员和函数成员。

class A
{
public:
    int x;
    void show()
    {
        cout << x << endl;
    }
};

int main()
{
    A a;
    a.x = 10;  // 访问数据成员
    a.show();  // 访问函数成员
    return 0;
}

作用域解析运算符

作用域解析运算符用于访问类的静态成员,它可以访问类的静态数据成员和静态函数成员。它的左操作数是类的名称,右操作数是静态成员的名称,它也不能重载。

class A
{
public:
    static int x;
    static void show()
    {
        cout << x << endl;
    }
};

int A::x = 10;  // 定义静态数据成员

int main()
{
    A::show();  // 访问静态函数成员
    cout << A::x << endl;  // 访问静态数据成员
    return 0;
}

条件运算符

条件运算符用于条件表达式,它的左操作数是一个条件表达式,右操作数是两个表达式,它会根据条件表达式的值来选择返回哪个表达式的值,它也不能重载。

int main()
{
    int a = 10;
    int b = 20;
    int c = a > b ? a : b;  // 条件运算符
    cout << c << endl;
    return 0;
}

大小运算符

大小运算符用于获取变量的大小,它的操作数可以是变量名称、表达式、类型名称或者类类型的对象,它会返回一个无符号整数,它也不能重载。

int main()
{
    int a = 10;
    cout << sizeof(a) << endl;  // 获取变量的大小
    return 0;
}

指针间接访问运算符

指针间接访问运算符用于访问指针指向的内存空间,它的左操作数是一个指针,右操作数是一个变量名称,它会返回指针指向的内存空间,它也不能重载。

int main()
{
    int a = 10;
    int *p = &a;
    cout << *p << endl;  // 指针间接访问运算符
    return 0;
}

类型信息运算符

类型信息运算符用于获取变量的类型信息,它的操作数可以是变量名称、表达式、类型名称或者类类型的对象,它会返回一个type_info类型的对象,它也不能重载。

int main()
{
    int a = 10;
    cout << typeid(a).name() << endl;  // 类型信息运算符
    return 0;
}

在C++中,有一些运算符是不能重载的,它们分别是:.(点)、::(作用域解析符)、?:(条件运算符)、sizeof(大小)、.*(指针间接访问)

本文链接:http://task.lmcjl.com/news/11849.html

展开阅读全文