首页 > 编程语言 >在bug中巩固C++

在bug中巩固C++

时间:2024-11-19 18:39:53浏览次数:1  
标签:巩固 string name author C++ bug Book id subject

记录自己的各种报错,在错误中学习ing

结构体全局变量的声明与初始化问题
#include <iostream>
using namespace std;

//声明一个结构体Books
struct Book{
    string name;
    string author;
    string subject;
    int id;

    //构造函数
    Book(string name, string author, string subject, int id):name(name), author(author), subject(subject), id(id){
}
}book1,book2;

//打印
void printBookInfo(const Book& book)
{
    cout << "name: " << book.name << endl;
    cout << "author: " << book.author << endl;
    cout << "subject: " << book.subject << endl;
    cout << "ID: " << book.id << endl;
}

int main()
{
book1=Book("C++ Primer", "Bjarne Stroustrup", "Programming", 101);
book2=Book("C++ Primer Plus", "Bjarne Stroustrup", "Programming", 102);

printBookInfo(book1);
printBookInfo(book2);

return 0;
}

注意!这段代码主要问题在于 Book 结构体的成员变量book1book2 的初始化方式上。
book1book2 是在全局范围内声明的变量,并且它们是结构体类型的实例,不能直接在声明之后使用赋值操作符进行初始化。
解决方法有两种

1.

在main函数外面声明并初始化
#include <iostream>
using namespace std;

// 声明一个结构体 Book
struct Book {
    string name;
    string author;
    string subject;
    int id;

    // 构造函数
    Book(string name, string author, string subject, int id) :
        name(name), author(author), subject(subject), id(id) {
    }
} book1("C++ Primer", "Bjarne Stroustrup", "Programming", 101),
  book2("C++ Primer Plus", "Bjarne Stroustrup", "Programming", 102);

// 打印函数
void printBookInfo(const Book& book) {
    cout << "name: " << book.name << endl;
    cout << "author: " << book.author << endl;
    cout << "subject: " << book.subject << endl;
    cout << "ID: " << book.id << endl;
}

int main() {
    // 已经在外部初始化了 book1 和 book2,直接调用打印函数即可
    printBookInfo(book1);
    printBookInfo(book2);

    return 0;
}

2.
在main函数中声明变量并初始化
#include <iostream>
using namespace std;

// 声明一个结构体 Book
struct Book {
    string name;
    string author;
    string subject;
    int id;

    // 构造函数
    Book(string name, string author, string subject, int id) :
        name(name), author(author), subject(subject), id(id) {
    }
};

// 打印函数
void printBookInfo(const Book& book) {
    cout << "name: " << book.name << endl;
    cout << "author: " << book.author << endl;
    cout << "subject: " << book.subject << endl;
    cout << "ID: " << book.id << endl;
}

int main() {
    // 使用构造函数初始化 book1 和 book2
    Book book1("C++ Primer", "Bjarne Stroustrup", "Programming", 101);
    Book book2("C++ Primer Plus", "Bjarne Stroustrup", "Programming", 102);

    // 调用打印函数
    printBookInfo(book1);
    printBookInfo(book2);

    return 0;
}

标签:巩固,string,name,author,C++,bug,Book,id,subject
From: https://www.cnblogs.com/lichunlei/p/18555415

相关文章

  • checkbug论文工具,AI论文写作查重降重智能助手!
    checkbug是一个专业的论文写作辅助工具,提供多种功能,包括论文生成、降重、查重、、ai率降低、答辩PPT生成等。用户可以通过“checkbug”快速生成论文大纲和完整的论文,支持多种学科专业方向,操作简单且生成速度快。此外,“checkbug”还提供降重服务,使用前沿的AI模型,最快可以在1分......
  • 【C++】十六进制数据的字节序排列问题、大小端
    十六进制数据的字节序排列问题,涉及到大小端(Endianness)的概念。包括它与大小端存储方式的关系。1.十六进制数据在内存中的存储定义的数据#defineFRAME_TYPE_PARAM_SET0x30010x3001是一个16位(2字节)整数。在内存中,0x3001的存储方式依赖于系统的字节序:小端......
  • C++编程:通过多线程与协程优化阻塞型任务的调度性能
    文章目录0.引言1.多线程VS多线程+协程1.1示例1:使用传统的多线程进行矩阵乘法1.2.示例2:使用协程优化阻塞型任务3.分析与对比0.引言我们知道:多线程:适用于处理计算密集型任务或IO操作较少的场景,但会因为线程切换和创建销毁的开销而影响性能。协程:适用于处......
  • 实验4 C++
    任务2:GradeCalc.cpp1#pragmaonce2#include<iostream>3#include<vector>4#include<string>5#include<algorithm>6#include<numeric>7#include<iomanip>89usingstd::vector;10usingstd::......
  • C++ 学习笔记(1):STL、Vector 与 Set
    背景最近在尝试入坑蓝桥杯,于是先从C++开始学起,这里记个笔记。这里我的笔记是跟着这个教程来的。沙比学校天天整些屁事都没什么空折腾。前言笔者是JS/TS写的比较多,以前写过C但是有点忘了,所以文章里都是和JS进行对比着方便快速理解。同时其实我还有几个小问题,嘻嘻。没......
  • BUG: udp的"addrlen"由局部变量改为全局变量,udp的数据包就无法发送到目标地址。
    一.BUG描述项目上要用到LWIP的UDP协议传输数据,然后弄了一个了UDP的demo;跑通了之后就对这个demo重新封装。我把套接字长度变量(addrlen)由局部改为全局之后,服务器的UDP就只能接收,不能发送数据了。二.BUG原因点击查看代码/**sockfd:套接字文件描述符*buf:接收缓冲区*len:接收......
  • C++中的友元函数和友元类&友元的作用及注意事项
    1.C++中的友元函数和友元类友元函数:友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。类授予它的友元特别的访问权。通常,同一个开发者会出于技术和非技术的原因控制类的友元和成员函数,否则在更新类时,还需要征得其他部分的拥有者的同意。友元函数在定义上和调用......
  • 【web】Gin+Go-Micro +Vue+Nodejs+jQuery+ElmentUI 用户模块之登陆功能bug现场调试以
    调试Web应用中的用户登录功能需要一定的技巧和工具支持。在这份指南中,我们将利用Gin、Go-Micro、Vue、Node.js、jQuery和ElementUI,介绍如何调试用户登录功能及其效果演示,涵盖初级、中级和高级用法。初级用法介绍初级阶段以简化的HTML表单和jQuery实现用户登录,并使用Gin框......
  • 打卡信奥刷题(264)用C++信奥P2010[普及组/提高] [NOIP2016 普及组] 回文日期
    [NOIP2016普及组]回文日期题目背景NOIP2016普及组T2题目描述在日常生活中,通过年、月、日这三个要素可以表示出一个唯一确定的日期。牛牛习惯用888位数字表示一......
  • 详解 C++ 的内存序模型
    详解C++的内存序模型C++提供了内存序模型来控制多线程程序中不同线程对共享内存的访问顺序。最常用的是顺序一致性内存模型(memory_order_seq_cst),但它也提供了其他模型(如memory_order_relaxed)以优化性能。一、顺序一致性内存模型(memory_order_seq_cst)定义顺序一致性......