Error - C++:修订间差异

来自牛奶河Wiki
跳到导航 跳到搜索
(创建页面,内容为“=== undefined reference to pthread_create === -pthread 分类:Develop 分类:C++”)
 
无编辑摘要
第2行: 第2行:
  -pthread
  -pthread


=== 在构造函数内初始化引用成员变量 ===
引用成员变量必须在构造函数的初始化列表(Constructor Initialization List)中进行初始化。这是因为引用一旦被初始化,就不能改变其引用的对象。因此,它必须在声明时就被初始化。
* 引用(reference)是 C++ 中的一个别名,它在声明时必须初始化为一个已存在的对象。一旦初始化,引用就和它所引用的对象绑定在一起,它们共享同一个内存地址
* 引用本质上是一个常量指针,它只是给一个已存在的对象起了另外一个名字。这个名字一旦确定,就不能再指向其他的对象
根据上面两段说明,更确切的说明是:引用成员变量必须在构造函数的初始化列表(Constructor Initialization List)中进行初始化,因为引用在声明时必须初始化为一个已存在的对象。所以,在构造函数内初始化引用成员变量,报错的是声明时未初始化(int& myRef;)。
<small><nowiki>class MyClass {
public:
    MyClass(int& ref) {
        myRef = ref;  // Error
    }
private:
    int& myRef;
};


class MyClass {
public:
    MyClass(int& ref) : myRef(ref) {}  // OK
private:
    int& myRef;
};</nowiki></small>
[[分类:Develop]]
[[分类:Develop]]
[[分类:C++]]
[[分类:C++]]

2024年9月10日 (二) 10:06的版本

undefined reference to pthread_create

-pthread

在构造函数内初始化引用成员变量

引用成员变量必须在构造函数的初始化列表(Constructor Initialization List)中进行初始化。这是因为引用一旦被初始化,就不能改变其引用的对象。因此,它必须在声明时就被初始化。

  • 引用(reference)是 C++ 中的一个别名,它在声明时必须初始化为一个已存在的对象。一旦初始化,引用就和它所引用的对象绑定在一起,它们共享同一个内存地址
  • 引用本质上是一个常量指针,它只是给一个已存在的对象起了另外一个名字。这个名字一旦确定,就不能再指向其他的对象

根据上面两段说明,更确切的说明是:引用成员变量必须在构造函数的初始化列表(Constructor Initialization List)中进行初始化,因为引用在声明时必须初始化为一个已存在的对象。所以,在构造函数内初始化引用成员变量,报错的是声明时未初始化(int& myRef;)。

class MyClass {
public:
    MyClass(int& ref) {
        myRef = ref;  // Error
    }
private:
    int& myRef;
};

class MyClass {
public:
    MyClass(int& ref) : myRef(ref) {}  // OK
private:
    int& myRef;
};