C 언어
C#에서 사용할 수 있는 대부분의 기본 제공 연산자를 재정의하거나 오버로드할 수 있습니다. 따라서 프로그래머는 사용자 정의 유형과 함께 연산자도 사용할 수 있습니다. 오버로드된 연산자는 키워드 operator라는 특수 이름을 가진 함수입니다. 다음에 정의되는 연산자에 대한 기호가 옵니다. 다른 함수와 마찬가지로 오버로드된 연산자에는 반환 유형과 매개변수 목록이 있습니다.
예를 들어, 다음 함수로 이동하십시오 -
public static Box operator+ (Box b, Box c) { Box box = new Box(); box.length = b.length + c.length; box.breadth = b.breadth + c.breadth; box.height = b.height + c.height; return box; }
위의 함수는 사용자 정의 클래스 Box에 대한 더하기 연산자(+)를 구현합니다. 두 개의 Box 개체의 속성을 추가하고 결과 Box 개체를 반환합니다.
다음 프로그램은 완전한 구현을 보여줍니다 -
라이브 데모using System; namespace OperatorOvlApplication { class Box { private double length; // Length of a box private double breadth; // Breadth of a box private double height; // Height of a box public double getVolume() { return length * breadth * height; } public void setLength( double len ) { length = len; } public void setBreadth( double bre ) { breadth = bre; } public void setHeight( double hei ) { height = hei; } // Overload + operator to add two Box objects. public static Box operator+ (Box b, Box c) { Box box = new Box(); box.length = b.length + c.length; box.breadth = b.breadth + c.breadth; box.height = b.height + c.height; return box; } } class Tester { static void Main(string[] args) { Box Box1 = new Box(); // Declare Box1 of type Box Box Box2 = new Box(); // Declare Box2 of type Box Box Box3 = new Box(); // Declare Box3 of type Box double volume = 0.0; // Store the volume of a box here // box 1 specification Box1.setLength(6.0); Box1.setBreadth(7.0); Box1.setHeight(5.0); // box 2 specification Box2.setLength(12.0); Box2.setBreadth(13.0); Box2.setHeight(10.0); // volume of box 1 volume = Box1.getVolume(); Console.WriteLine("Volume of Box1 : {0}", volume); // volume of box 2 volume = Box2.getVolume(); Console.WriteLine("Volume of Box2 : {0}", volume); // Add two object as follows: Box3 = Box1 + Box2; // volume of box 3 volume = Box3.getVolume(); Console.WriteLine("Volume of Box3 : {0}", volume); Console.ReadKey(); } } }
위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -
Volume of Box1 : 210 Volume of Box2 : 1560 Volume of Box3 : 5400
다음 표는 C#에서 연산자의 오버로드 기능을 설명합니다 -
시니어 번호 | 연산자 및 설명 |
---|---|
1 | +, -, !, ~, ++, -- 이러한 단항 연산자는 하나의 피연산자를 사용하며 오버로드될 수 있습니다. |
2 | +, -, *, /, % 이러한 이항 연산자는 하나의 피연산자를 사용하며 오버로드될 수 있습니다. |
3 | ==, !=, <,>, <=,>= 비교 연산자는 오버로드될 수 있습니다. |
4 | &&, || 조건부 논리 연산자는 직접 오버로드할 수 없습니다. |
5 | +=, -=, *=, /=, %= 할당 연산자는 오버로드할 수 없습니다. |
6 | =, ., ?:, ->, new, is, sizeof, typeof 이러한 연산자는 오버로드할 수 없습니다. |
위의 논의에 비추어 앞의 예를 확장하고 몇 가지 연산자를 더 오버로딩합시다 -
라이브 데모using System; namespace OperatorOvlApplication { class Box { private double length; // Length of a box private double breadth; // Breadth of a box private double height; // Height of a box public double getVolume() { return length * breadth * height; } public void setLength( double len ) { length = len; } public void setBreadth( double bre ) { breadth = bre; } public void setHeight( double hei ) { height = hei; } // Overload + operator to add two Box objects. public static Box operator+ (Box b, Box c) { Box box = new Box(); box.length = b.length + c.length; box.breadth = b.breadth + c.breadth; box.height = b.height + c.height; return box; } public static bool operator == (Box lhs, Box rhs) { bool status = false; if (lhs.length == rhs.length && lhs.height == rhs.height && lhs.breadth == rhs.breadth) { status = true; } return status; } public static bool operator !=(Box lhs, Box rhs) { bool status = false; if (lhs.length != rhs.length || lhs.height != rhs.height || lhs.breadth != rhs.breadth) { status = true; } return status; } public static bool operator <(Box lhs, Box rhs) { bool status = false; if (lhs.length < rhs.length && lhs.height < rhs.height && lhs.breadth < rhs.breadth) { status = true; } return status; } public static bool operator >(Box lhs, Box rhs) { bool status = false; if (lhs.length > rhs.length && lhs.height > rhs.height && lhs.breadth > rhs.breadth) { status = true; } return status; } public static bool operator <=(Box lhs, Box rhs) { bool status = false; if (lhs.length <= rhs.length && lhs.height <= rhs.height && lhs.breadth <= rhs.breadth) { status = true; } return status; } public static bool operator >=(Box lhs, Box rhs) { bool status = false; if (lhs.length >= rhs.length && lhs.height >= rhs.height && lhs.breadth >= rhs.breadth) { status = true; } return status; } public override string ToString() { return String.Format("({0}, {1}, {2})", length, breadth, height); } } class Tester { static void Main(string[] args) { Box Box1 = new Box(); // Declare Box1 of type Box Box Box2 = new Box(); // Declare Box2 of type Box Box Box3 = new Box(); // Declare Box3 of type Box Box Box4 = new Box(); double volume = 0.0; // Store the volume of a box here // box 1 specification Box1.setLength(6.0); Box1.setBreadth(7.0); Box1.setHeight(5.0); // box 2 specification Box2.setLength(12.0); Box2.setBreadth(13.0); Box2.setHeight(10.0); //displaying the Boxes using the overloaded ToString(): Console.WriteLine("Box 1: {0}", Box1.ToString()); Console.WriteLine("Box 2: {0}", Box2.ToString()); // volume of box 1 volume = Box1.getVolume(); Console.WriteLine("Volume of Box1 : {0}", volume); // volume of box 2 volume = Box2.getVolume(); Console.WriteLine("Volume of Box2 : {0}", volume); // Add two object as follows: Box3 = Box1 + Box2; Console.WriteLine("Box 3: {0}", Box3.ToString()); // volume of box 3 volume = Box3.getVolume(); Console.WriteLine("Volume of Box3 : {0}", volume); //comparing the boxes if (Box1 > Box2) Console.WriteLine("Box1 is greater than Box2"); else Console.WriteLine("Box1 is not greater than Box2"); if (Box1 < Box2) Console.WriteLine("Box1 is less than Box2"); else Console.WriteLine("Box1 is not less than Box2"); if (Box1 >= Box2) Console.WriteLine("Box1 is greater or equal to Box2"); else Console.WriteLine("Box1 is not greater or equal to Box2"); if (Box1 <= Box2) Console.WriteLine("Box1 is less or equal to Box2"); else Console.WriteLine("Box1 is not less or equal to Box2"); if (Box1 != Box2) Console.WriteLine("Box1 is not equal to Box2"); else Console.WriteLine("Box1 is not greater or equal to Box2"); Box4 = Box3; if (Box3 == Box4) Console.WriteLine("Box3 is equal to Box4"); else Console.WriteLine("Box3 is not equal to Box4"); Console.ReadKey(); } } }
위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -
Box 1: (6, 7, 5) Box 2: (12, 13, 10) Volume of Box1 : 210 Volume of Box2 : 1560 Box 3: (18, 20, 15) Volume of Box3 : 5400 Box1 is not greater than Box2 Box1 is less than Box2 Box1 is not greater or equal to Box2 Box1 is less or equal to Box2 Box1 is not equal to Box2 Box3 is equal to Box4
C 언어
구성품 및 소모품 나무 상자/상자 × 1 Arduino UNO × 1 Adafruit 웨이브 실드 × 1 SainSmart 4채널 릴레이 모듈 × 1 유리창 와이퍼 모터 × 1 빨간 LED 크리스마스 조명(100) × 1 연기 기계 × 1 파워 앰프/스피커 × 1 이 프로젝트 정보 *** 버전 4로 업데이트됨 *** 나는 최근에 이 프로젝트의 Arduino 코드를
3D 프린터 운영자는 적층 제조 분야의 기술 및 창의적 기술을 갖춘 유능한 개인입니다. 그들은 CAD(Computer-Aided) 소프트웨어를 사용하여 완성된 작품으로 3D 인쇄할 디자인을 개발합니다. . 3D 프린터 운영자로서 당신이 생각하는 것보다 훨씬 더 많은 직업 기회가 있다는 것을 알고 계셨습니까? 2014년 9월에 엔지니어링에 게시된 모든 일자리의 약 35%가 3D 프린팅 및 적층 제조 산업 기술을 필요로 합니까? 그리고 사람들이 여전히 자고 있는 지역이기 때문에 이 숫자는 꾸준히 증가하고 있습니다. 3D 프린터 기술