C++/Syntax
2021. 3. 15. 23:31
delete
함수를 사용하지 못하도록 막는 역할을 하는 키워드이다.
#include <iostream> #include <cassert> class Fraction { int numerator_; int denominator_; public: Fraction(char) = delete; explicit Fraction(int num = 0, int den = 1) : numerator_(num), denominator_(den) { std::cout << "Default constructor" << std::endl; assert(den != 0); } Fraction(const Fraction& fraction) : numerator_(fraction.numerator_), denominator_(fraction.denominator_) { std::cout << "Copy constructor called" << std::endl; } friend std::ostream& operator << (std::ostream& out, const Fraction& f) { out << f.numerator_ << " / " << f.denominator_; return (out); } }; void doSomething(Fraction frac) { std::cout << frac << std::endl; } int main() { using namespace std; Fraction frac('c'); // 에러 }
빌드하면 아래와 같은 에러가 발생한다.
error C2280: 'Fraction::Fraction(char)': attempting to reference a deleted function
'C++ > Syntax' 카테고리의 다른 글
C++ 람다 함수 (Lambda Function) (0) | 2021.03.30 |
---|---|
C++ 깊은 복사(Deep Copy) (0) | 2021.03.15 |
C++ 얕은 복사(Shallow Copy) (0) | 2021.03.15 |
C++ 함수 포인터 (Function Pointer) (0) | 2021.03.12 |
C++ 인라인 함수 (Inline Function) (0) | 2021.03.12 |