在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