课程:实例化对象混乱

发布于 2025-01-27 11:05:07 字数 2092 浏览 3 评论 0原文

以下是一个简单的书籍列表的代码,其中包含一个类,可以使用向量存储书名和ISBN号码中的超载函数。该程序运行良好,我可以使用我的课程中的访问器函数返回特定名称(或ISBN)来对其进行测试。

问题:我尝试致电(实例化?)带有我班级参数的构造函数,但它行不通,所以我对此进行了评论。但是我仍然能够在没有错误的情况下运行该程序。从下面的主要手段 - // bookdata bkdataobj(bookname,isbn);

从观看教程中,我想我总是必须从需要打电话给的班级中为特定的构造函数做一个对象吗?我的程序肯定仍然使用我的超载构造函数和函数声明 bookdata(string,int); 在不为其对象的情况下首先制作对象。 感谢您对此事的任何帮助或意见。

main

#include <iostream>
#include <string>
#include <vector>
#include "BookData.h"
using namespace std;

int main()
{
    string bookName[] = { "Neuromancer", "The Expanse", "Do Androids Dream of Electric Sheep?", "DUNE" };
    int isbn[] = { 345404475, 441569595, 316129089, 441172717 };

    //BookData bkDataObj(bookName, isbn);     //how did program run without instantiating object for class?

    vector <BookData> bookDataArr;

    int arrayLength = sizeof(bookName) / sizeof(string);
    for (int i = 0; i < arrayLength; i++) {
        bookDataArr.push_back(BookData(bookName[i], isbn[i]));
    }
    cout << "Book 4 is: " << bookDataArr[3].getBookNameCl();      //test if works

    return 0;
}

bookdata.h

#include <iostream>
#include <string>

using namespace std;

class BookData
{
public:
    BookData();
    BookData(string, int);       //wasn't I supposed to make an object for this constructor in my main?

    string getBookNameCl();
    int getIsbnCl();

private:
    string bookNameCl;
    int isbnCl;
};

bookdata.cpp

#include "BookData.h"

BookData::BookData() {
    bookNameCl = " ";
    isbnCl = 0;
}

BookData::BookData(string bookNameOL, int isbnOL) {      //how did I use this function 
    bookNameCl = bookNameOL;                             //definition without an object in main?
    isbnCl = isbnOL;
}

string BookData::getBookNameCl() {                 //can still return a book name
    return bookNameCl;
}

int BookData::getIsbnCl() {
    return isbnCl;
}

Below is code for a simple book list with a class to store book names and isbn numbers into an overloaded function using a vector. This program runs fine and I can test it by returning a specific name (or isbn) using an accessor function from my class.

Question: I tried calling (instantiating?) a constructor with parameters from my class but it would not work, so I commented it out. Yet I was still able to run the program without error. From my main below - //BookData bkDataObj(bookName, isbn);

From watching tutorials, I thought I always had to make an object for a specific constructor from a class that I needed to call? My program definitely still uses my overloaded constructor and function declaration BookData(string, int); without making an object for it in main first.
Thanks for any help or input on this matter.

Main

#include <iostream>
#include <string>
#include <vector>
#include "BookData.h"
using namespace std;

int main()
{
    string bookName[] = { "Neuromancer", "The Expanse", "Do Androids Dream of Electric Sheep?", "DUNE" };
    int isbn[] = { 345404475, 441569595, 316129089, 441172717 };

    //BookData bkDataObj(bookName, isbn);     //how did program run without instantiating object for class?

    vector <BookData> bookDataArr;

    int arrayLength = sizeof(bookName) / sizeof(string);
    for (int i = 0; i < arrayLength; i++) {
        bookDataArr.push_back(BookData(bookName[i], isbn[i]));
    }
    cout << "Book 4 is: " << bookDataArr[3].getBookNameCl();      //test if works

    return 0;
}

BookData.h

#include <iostream>
#include <string>

using namespace std;

class BookData
{
public:
    BookData();
    BookData(string, int);       //wasn't I supposed to make an object for this constructor in my main?

    string getBookNameCl();
    int getIsbnCl();

private:
    string bookNameCl;
    int isbnCl;
};

BookData.cpp

#include "BookData.h"

BookData::BookData() {
    bookNameCl = " ";
    isbnCl = 0;
}

BookData::BookData(string bookNameOL, int isbnOL) {      //how did I use this function 
    bookNameCl = bookNameOL;                             //definition without an object in main?
    isbnCl = isbnOL;
}

string BookData::getBookNameCl() {                 //can still return a book name
    return bookNameCl;
}

int BookData::getIsbnCl() {
    return isbnCl;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文