直接从另一个 class 实例化时,成员整数发生变化
Member integer changes when directly instantiated from another class
假设我有两个 类,A 和 B。A 有一个整数,它从其构造函数显示在控制台中。它还有一个 B 的成员对象。B 像 A 一样显示一个整数,但是它在 A 创建它时从 A 获取它的整数。整数必须直接进入 B 的构造函数,因为它是一个常量值。
因此,当 A 将自己的整数传递给 B 时,我希望 A 和 B 在控制台 (1) 中显示相同的数字。相反,当 B 的构造函数打印出它的整数时,它显示 -858993460。这是为什么?
当 A 实例化 B 对象时,为 B 的 const int 传递一个整数,为什么整数会改变值?
main.cpp
#include "A.h"
int main() {
A a;
std::cin.get();
return 0;
}
A.h
#pragma once
#include <iostream>
#include "B.h"
class A {
public:
A() :
b(NUM_A)
{ std::cout << "A's number: " << NUM_A << std::endl; }
private:
B b;
const int NUM_A = 1;
};
B.h
#pragma once
#include <iostream>
class B {
public:
B (int num) :
NUM_B(num)
{ std::cout << "B's int: " << NUM_B << std::endl; }
const int NUM_B;
};
您的代码中的问题是 b
在 NUM_A
之前初始化。
class A {
public:
const int NUM_A = 1;
A() :
b(NUM_A)
{
std::cout << "A's number: " << NUM_A << std::endl;
}
private:
const int NUM_A = 1;
B b;
//B b;
//const int NUM_A = 1;
};
在 A
的定义中,成员 b
在成员 NUM_A
之前。结果,b
在 NUM_A
之前被初始化。您传递给 B
的构造函数的值是未初始化的值。
更改A
中成员的顺序。而不是
B b;
const int NUM_A = 1;
使用
const int NUM_A = 1;
B b;
假设我有两个 类,A 和 B。A 有一个整数,它从其构造函数显示在控制台中。它还有一个 B 的成员对象。B 像 A 一样显示一个整数,但是它在 A 创建它时从 A 获取它的整数。整数必须直接进入 B 的构造函数,因为它是一个常量值。
因此,当 A 将自己的整数传递给 B 时,我希望 A 和 B 在控制台 (1) 中显示相同的数字。相反,当 B 的构造函数打印出它的整数时,它显示 -858993460。这是为什么? 当 A 实例化 B 对象时,为 B 的 const int 传递一个整数,为什么整数会改变值?
main.cpp
#include "A.h"
int main() {
A a;
std::cin.get();
return 0;
}
A.h
#pragma once
#include <iostream>
#include "B.h"
class A {
public:
A() :
b(NUM_A)
{ std::cout << "A's number: " << NUM_A << std::endl; }
private:
B b;
const int NUM_A = 1;
};
B.h
#pragma once
#include <iostream>
class B {
public:
B (int num) :
NUM_B(num)
{ std::cout << "B's int: " << NUM_B << std::endl; }
const int NUM_B;
};
您的代码中的问题是 b
在 NUM_A
之前初始化。
class A {
public:
const int NUM_A = 1;
A() :
b(NUM_A)
{
std::cout << "A's number: " << NUM_A << std::endl;
}
private:
const int NUM_A = 1;
B b;
//B b;
//const int NUM_A = 1;
};
在 A
的定义中,成员 b
在成员 NUM_A
之前。结果,b
在 NUM_A
之前被初始化。您传递给 B
的构造函数的值是未初始化的值。
更改A
中成员的顺序。而不是
B b;
const int NUM_A = 1;
使用
const int NUM_A = 1;
B b;