請看下面的代碼
#include <iostream>
使用 命名空間 std.com.cn>。
class Number[/span
{
int a;
public:
Number()。
Number(int num_1) {
a = num_1;
}
void print_number(void) {cout < < "a的值是" << a << endl; }; "a的值是" << a << endl; }
};
int main()
{
數字num_1(33), num_3。
數字num_2(num_1)。
num_2.print_number()。
return 0;
在上面的代碼中,我在同一個類中有兩個建構式,但在編譯時,給了我一個錯誤
ccnd0o9C.o:xx.cpp:(.text 0x30): undefined reference to `Number::Number()
collect2.exe: error: ld returned 1 exit status
誰能解決這個問題?我仍然需要2個建構式,但不需要將num_3替換為num_3()主函式。
uj5u.com熱心網友回復:
在你的類中,你已經宣告了默認的建構式,但是你并沒有定義它。
你可以default它(自C 11以來),你就可以了:
Number() = default。
否則的話:
Number() {}。
正如@TedLyngmo所喜歡的帖子,兩者的行為都是一樣的,但按照標準,類的含義會有所不同。更多內容請閱讀這里。 C 11中的新語法"=默認"
@Jarod42的評論作為旁注。當默認建構式為成員
a提供默認值時,它才有意義。否則,它將是未初始化的(不確定的值),并且閱讀它們將導致UB。
uj5u.com熱心網友回復:
使用此代碼
#include <iostream>
使用 命名空間 std.com.cn>。
class Number[/span
{
int a;
public:
Number(){};
Number(int num_1)
{
a = num_1;
}
void print_number(void) {cout < < "a的值是" << a << endl; }; "a的值是" << a << endl; }
};
int main()
{
數字num_1(33), num_3。
數字num_2(num_1)。
num_2.print_number()。
return 0;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/328101.html
標籤:
