>백엔드 개발 >C++ >C++ 함수 오버로드 및 재작성에서 참조 및 포인터 처리

C++ 함수 오버로드 및 재작성에서 참조 및 포인터 처리

王林
王林원래의
2024-04-20 11:51:01418검색

함수를 오버로드할 때는 참조나 포인터를 전달해야 하며, 모든 함수는 동일한 유형의 데이터를 사용해야 합니다. 함수가 다시 작성될 때 참조 멤버 함수의 경우 하위 클래스 함수는 동일한 유형의 변수를 참조해야 하며, 하위 클래스 함수는 동일한 유형의 변수를 가리켜야 합니다.

C++ 函数重载和重写中引用和指针的处理

C++ 함수 오버로딩 및 재정의에서 참조 및 포인터 처리

함수 오버로딩

함수 오버로딩을 사용하면 동일한 범위에서 이름은 같지만 매개변수 목록이 다른 여러 함수를 생성할 수 있습니다. 참조 및 포인터의 경우 다음 사항에 주의해야 합니다.

  • 참조를 전달할 때 모든 함수는 동일한 유형의 데이터를 참조해야 합니다.

    void print(const int& num);
    void print(const double& d);
  • 포인터를 전달할 때 모든 함수는 동일한 유형의 데이터를 가리켜야 합니다.

    void print(int* num);
    void print(double* d);

함수 재작성

함수 재작성은 하위 클래스의 이름과 매개변수 목록이 동일한 상위 클래스의 함수를 구현하는 것입니다. 참조 및 포인터의 경우 주의해야 합니다.

  • 참조 멤버 함수의 경우 하위 클래스 함수는 동일한 유형의 변수를 참조해야 합니다.

    class Parent {
    public:
      void setAge(const int& age);
    };
    
    class Child : public Parent {
    public:
      void setAge(const int& age) override;  // 同一类型引用
    };
  • 멤버 함수를 가리키는 경우 하위 클래스 함수는 다음을 참조해야 합니다. 동일한 유형의 변수를 가리킵니다. 이 클래스에는 setAge(const int& age)setName(const string& name)이라는 두 가지 멤버 함수가 있습니다.

    하위 클래스 Employee를 만들고 Person 클래스에서 상속한 다음 setAge 함수를 재정의하여 연령을 age 로 설정합니다. code>에 5를 추가하기 전에.
  • class Parent {
    public:
      int* getPtr();
    };
    
    class Child : public Parent {
    public:
      int* getPtr() override;   // 同一类型指针
    };
이제 Employee 개체를 만들고 재정의된 setAge 함수를 사용할 수 있습니다.

class Person {
public:
    void setAge(const int& age);
    void setName(const string& name);
};

class Employee : public Person {
public:
    void setAge(const int& age) override;  // 重写setAge函数
};

// Employee 类中的 setAge 函数
void Employee::setAge(const int& age) {
    Person::setAge(age + 5);  // 调用父类setAge函数
}

위 내용은 C++ 함수 오버로드 및 재작성에서 참조 및 포인터 처리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.