운영자에 대한 몇 가지 지식 포인트

1. 논리 연산자 대신 키워드를 사용할 수 있습니다.

#define debug qDebug()<<
int main(int argc, char *argv[])
{
    debug (true and false);
}

 2. C ++는 표현식의 평가 순서를 명확하게 규정하지 않습니다. 표현식이 왼쪽에서 오른쪽으로 평가된다고 가정 할 수 없습니다. 이상한 실행 결과를 피하기 위해 동일한 표현식에서 동일한 객체를 동시에 읽고 쓰는 것을 피하십시오 ( v [i] = i ++ 이런 종류의 코드 작성을 피하는 것과 같이).

3. 쉼표 연산자, 논리 AND (&&), 논리 OR (||)은 왼쪽의 피연산자가 먼저 평가되도록 규정합니다.

  • 쉼표 연산자의 일반적인 형식은 식 1, 식 2입니다. 평가 프로세스는 두 표현식의 값을 개별적으로 평가하고 표현식 2의 값을 전체 쉼표 표현식의 값으로 사용하는 것입니다. (예 : y = (x = a + b), (b + c);)
  • &&는 왼쪽 피연산자의 평가 결과가 참일 때만 오른쪽 값을 평가합니다.
  • || 오른쪽의 값은 왼쪽의 평가 결과가 거짓 인 경우에만 평가됩니다.
C ++ 연산자 우선 순위 테이블
우선 순위 운영자 기술 연관성
1 :: 범위 해결 왼쪽에서 오른쪽으로
2 ++- 접미사 자동 증가 / 접미사 자동 감소
() 대괄호
[] 배열 첨자
. 멤버 선택 (객체)
−> 멤버 선택 (포인터)
++- 접두사 증가 / 접두사 감소 오른쪽에서 왼쪽으로
+ − 더하기 / 빼기
! ~ 논리 부정 / 비트 부정
(유형) 강제 유형 변환
* 포인터가 가리키는 값을 가져옵니다.
& 그래서 주소
크기 그저 그저 크기
new, new [] 동적 메모리 할당 / 동적 어레이 메모리 할당
삭제, 삭제 [] 동적 메모리 해제 / 동적 어레이 메모리 해제
4 . *-> * 멤버 개체 선택 / 멤버 포인터 선택 왼쪽에서 오른쪽으로
5 * / % 곱셈 / 나눗셈 / 나머지
6 + − 플러스 / 마이너스
7 << >> 왼쪽 비트 시프트 / 오른쪽 비트 시프트
8 <<= 보다 작거나 같음
>> = 크거나 같음
9 ==! = 같음 / 같지 않음
10 & 비트 및
11 ^ 비트 XOR
12 | 비트 또는
13 && AND 연산
14 || OR 작업
15 ? : 삼항 연산자 오른쪽에서 왼쪽으로
16 = 할당
+ = − = 더하기 후 할당 / 빼기 후 할당
* = / = % = 곱셈 후 할당 / 나눗셈 후 할당 / 나머지를 취한 후 할당
<< = >> = 왼쪽으로 비트 시프트 할당 / 오른쪽으로 비트 시프트 할당
& = ^ = | = 비트 AND 연산 후 할당 / 비트 연산 후 비트 배타적 OR 할당 / 비트 OR 연산 후 할당
17 던지다 예외 발생
18 , 반점 왼쪽에서 오른쪽으로

 4、一些运算符可以重载:

5、重载函数形式是:operator后面加运算符,a+b相当于a.operator+(b)

6、预置含义:++a等价于a+=1和a=a+1,但不适用于此规则, 编译器不会根据A::operator+()和A::operator=()生成::operator+=()的定义。一个类默认带有赋值运算、取地址运算、顺序(逗号)运算的含义的,可以选择去除这些含义:

#define debug qDebug()<<
struct ceshi
{
    int frist;
    int second;
    ceshi(int one = 0,int two = 0):frist{one},second{two}
    {
    }
    void operator =(const ceshi&) = delete;
    void operator &() = delete;
    void operator ,(const ceshi&) = delete;
};

int main(int argc, char *argv[])
{
    ceshi a(4,5);
    ceshi b = a;
    a = b;
    &a;
    a,b;
}

注:ceshi b = a;是调用(拷贝/移动)构造函数而不是operator=()。

추천

출처blog.csdn.net/kenfan1647/article/details/113817131