c++ - 类继承并将值传递给派生类
问题描述
我对 c++ 完全陌生,并试图学习类的继承。当我构建一个数组并尝试以数组作为参数调用派生类时,传递值更改为 0。我不知道为什么。请帮忙 !谢谢 。
当我运行 main 时,它应该显示 1.5, 2.5,3.5 , 4.5, 5.5,但它显示 1.5 2.5 0 4.5 5.5 我在 main 中尝试了 cout nums[2] ,它显示 3.5 ,我不知道为什么什么时候B obj 被调用,它变为 0 。这是代码:
#include "B_double.hpp"
#include <iostream>
#include <string>
using namespace std;
int main() {
double nums[5] = {1.5, 2.5,3.5 , 4.5, 5.5};
cout << nums[2]<< endl;
B_double myObj(nums, 6);
myObj.printBuffer();
return 0;
}
#ifndef A_H_
#define A_H_
#include <iostream>
using namespace std ;
class A{
protected :
int * x ;
private :
void initialize (int);
void cleanup();
public:
A(int i);
virtual ~A();
int getX()const;
void setX(int);
};
#endif /* A_H_ */
#include "A.h"
using namespace std ;
void A::initialize(int i){
x = new int(i);
}
void A:: cleanup(){
delete x;
}
A::A(int i){
*x = 0 ;
initialize (i);
}
A::~A(){
cleanup();
}
int A:: getX()const{
return *x;
}
void A:: setX(int i){
*x = i;
}
#ifndef B_DOUBLE_HPP_
#define B_DOUBLE_HPP_
#include<iostream>
#include "A.h"
using namespace std ;
class B_double : public A{
private :
double buffer[5];
public:
B_double( double* , int i);
void printBuffer()const;
};
#endif /* B_HPP_ */
B_double::B_double(double* arr, int i): A(i){
for ( int m = 0 ; m<5; m++){
cout << arr[m] << endl;
}
for ( int j = 0 ; j<5; j++){
buffer[j] = arr[j];
cout <<buffer[j]<< ",";
}
}
void B_double::printBuffer()const{
for (int i = 0 ; i< 5 ; i++){
cout << this->buffer[i]<<",";
}
}
#ifndef B_DOUBLE_HPP_
#define B_DOUBLE_HPP_
#include<iostream>
#include "A.h"
using namespace std ;
class B_double : public A{
private :
double buffer[5];
public:
B_double( double* , int i);
void printBuffer()const;
};
#endif /* B_HPP_ */
B_double::B_double(double* arr, int i): A(i){
for ( int m = 0 ; m<5; m++){
cout << arr[m] << endl;
}
for ( int j = 0 ; j<5; j++){
buffer[j] = arr[j];
cout <<buffer[j]<< ",";
}
}
void B_double::printBuffer()const{
for (int i = 0 ; i< 5 ; i++){
cout << this->buffer[i]<<",";
}
}
解决方案
推荐阅读
- function - 八度 - fskipl:无效的流号
- tensorflow - 形状必须为 2 级,但 NonMaxSuppressionV3 为 3 级:错误
- vb.net - 如何使用 vbnet 代码清理和构建项目
- python - 无法同时使用 pyocr 和 pytesseract 打印从图像中提取的字符串
- slider - 使用 slick.js 的缩略图滑块,位置失真
- local-storage - Windows 10下的电脑上Microsoft Edge在哪里保存localsorage?
- r - 如何将 TIFF 文件转换为 R 中的二进制图像?
- python - 如何通过对非标量值求和来将不同类型的字典转换为熊猫系列?
- ssl - LDAP over SSL 636,在本地工作,但不在外部工作
- rest - Pod 之间的 GKE 延迟不佳