可以将指向对象的指针与nullptr进行比较吗?

4

我已经声明并实现了两个类,LibraryBookLibrary有一个私有成员Book** books。这个指向指针的指针用于存储指向Book对象的指针。我还在Library类中重载了+=运算符,如下所示:

Library& Library::operator+=(Book* addThisBook){
    bool added = false;
    int index = 0;

    if(isFull()){
        cout << "Library is full!" << endl;
    }else{
        //add book in first available space
        while(!added && index<librarySize){
            if(books[index] == nullptr){
               books[index] = addThisBook;
                added = true;
            }
            index++;
        }  
        numBooks++;
    }
    return *this;
}

我的问题与if语句中的条件有关;是否允许将指向自定义类的指针与nullptr进行比较?


允许这样做,但请确保您的库(books[index])确实初始化为nullptr - dureuill
1个回答

7

指向自定义类的指针可以与 nullptr 进行比较吗?

是的,任何类型的指针都可以与 nullptr 进行比较,以判断它们是否相等。


4
所有指针都有一个隐式转换为布尔值的功能,用于检查是否为空指针 (ptr != nullptr),因此 OP 可以写成 if(!books[index])。请注意,在这种情况下 ! 操作符表示“非空指针”,而不是“逻辑非”。 - AndyG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接