关于赋值运算符过度加载错误

About assignment operator over loading error

本文关键字:加载 错误 赋值运算符      更新时间:2023-10-16

请解释此程序的错误消息..

#include <iostream>
using namespace std;
class copyConst
{
    private:
    int someVal;
    public:
    copyConst(const copyConst &objParam)
    {
        someVal = objParam.someVal;
    }
    copyConst()
    {
        someVal = 9;
    }
    copyConst& operator=(const copyConst &objParam)
    {
        if (this == &objParam)
            return *this;
        someVal = objParam.someVal;
        return *this;
        }
    };
int main(int argc, char **argv)
{
    copyConst obj1;
    copyConst obj2(obj1);
    copyConst obj3 = obj1;
    copyConst obj4;
    obj4 = obj1;

    return 0;
}

错误信息:

gcc -Wall -o "无题" "无题.cpp" (在目录中: /home/rwik/Documents( untitled.cpp: In function 'int main(int, char**(':无题.cpp:53:12:警告:变量"obj3"已设置但未设置 used [-Wunused-but-set-variable]/tmp/ccUIyRPg.o: in function __static_initialization_and_destruction_0(int, int)': untitled.cpp:(.text+0x8a): undefined reference to std::ios_base::Init::Init((' untitled.cpp:(.text+0x8f(: undefined 引用 'std::ios_base::Init::~Init((' 编译失败。 收集2:LD 返回 1 个退出状态

使用 g++ 编译,而不是gcc 编译。你有C++代码,而不是 C 代码。

它与类代码无关。

有两种类型的警告消息。第二个是因为 gcc 中缺少链接标志: gcc -lstdc++ -Wall -o "untitled" "untitled.cpp"(或等效g++ -Wall -o "untitled" "untitled.cpp .

关于未使用变量的第一个警告是因为obj3变量已声明但未在其他任何地方使用。对于这种情况,我正在使用(void)obj3;语句来解决此类警告消息。