2013-06-15 2 views
1

다음은 코드입니다.C++의 쉼표 연산자

#include<iostream> 

using namespace std; 

class x { 
    int a; 
public : 
    x(int t=2):a(t) {} 
    void print(){ 
     cout <<"value is "<<a; 
    } 
    x& operator,(x&a){ 
     return *this; 
    } 
}; 

int main(){ 
    x a(1),b(2),c(3),d(4); 
    x t=(a,b,c,d); 
    t.print(); 
    return 0; 
} 

출력value is 1
값 =이 광고의 X t 4없는 이유를 설명해 (A, B, C, D); instance 오른쪽을 의미하는 동안 x& operator , (x &instance)this는 왼쪽 피연산자 참조하기 때문에

+1

자, 코드 형식을 지정하는 방법을 알기에 충분히 오랫동안 여기에 왔습니다. –

+0

어떻게해야할지 알려주세요. – akash

+1

@akash 형식을 업데이트했습니다. '편집'옵션을 사용하여 현재 내용을 보거나 '편집 한 [시간]'링크를 클릭하여 차이점을 볼 수 있습니다. 또는 직접 편집하고 '{}'아이콘을 사용하십시오. – simonc

답변

2
x t = (a,b,c,d); 

는 상관없이이 표현의 평가 어떤 순서로, 가장 왼쪽 피연산자는 항상 반환되지 않습니다.

따라서 a이 반환되며 인쇄 된 값은 1입니다.

쉼표 연산자를 오버로드하지 않은 경우 (a, b, c)과 같은 식에서 가장 오른쪽 피연산자가 반환되므로 4이 표시 될 수 있습니다.