c++与qt学习记录
文章平均质量分 54
记录历程
table study
这个作者很懒,什么都没留下…
展开
-
学习记录5.9:c语言中&与&&的区别
if (A && B) 如果 A 为 false ,整个表达式就为 false,不再计算 B 的值了。if (A & B) 如果 A 为 false ,整个表达式就为 false,但还要计算 B 的值。也就是说对于bool类型 & 和&&、| 和 || 的if判断结果是相同的。if (A && B++) 如果A 为 false,&&不会再计算后面的值。if (A & B++) 如果A 为 false,&则会计算后面的值。,||是逻辑或运算符,都是逻辑运算符,两边只能是bool类型。原创 2023-05-09 19:00:39 · 296 阅读 · 0 评论 -
2023.5.20c++学习记录
3.流是指要从某种I/O设备上读入或写出的字符序列,术语“流”试图说明字符是随着时间顺序生成或消耗的。1.main函数的返回值必须是int型,这意味着不能return 0.1;7.for循环用于已知循环次数,while循环用于未知循环次数。4.后接std::endl用以刷新输出流,类似c语言中的\n。2.任何非零的返回值都有操作系统定义的含义。6.文件结束符eof,可用于结束一些程序。5.空格符不允许出现在预处理指示中。c++的第一天学习记录。原创 2023-05-20 14:34:29 · 61 阅读 · 0 评论 -
5.21c++学习记录
4.带符号类型可以表示为正数也可以为负数,但无符号型不可表示负数。但c++中,可以把负值赋给unsigned型,这个时候则是取模。1.自己编的头文件使用时放双引号里。2.点操作符仅应用于类类型的对象。3.负数取模与正数取模不同。原创 2023-05-21 15:16:56 · 48 阅读 · 1 评论 -
5.22-5.29c++学习记录
5.内置类型变量是否自动初始化取决于变量定义的位置。在函数体外定义的变量都初始化成0,在函数体内定义的内置类型变量不自动进行初始化。13.非const引用只能绑定到与该引用同类型的对象,const引用则可以绑定到不同但相关的类型的对象或绑定到右值。3.初始化不是赋值,初始化是创建变量并给他赋初始值,赋值则是擦除对象的当前值并用新值代替。15.枚举类型的对象的初始化或赋值,只能通过其枚举成员或同一枚举类型的其他对象来进行。4.初始化内置类型的对象只有一个方法:提供一个值。11.引用就是对象的另一个名字。原创 2023-05-29 19:21:43 · 76 阅读 · 1 评论 -
关于c语言解决肇事司机问题
根据题目的描述,甲说牌照的前两位数字是相同的,乙说牌照的后两位数字是相同的,但与前两位不同,丙说车号刚好是一个整数的平方。根据这些线索,我们可以对车号进行逐个尝试,并且判断是否满足甲、乙、丙的条件。//定义前后两组数据以及车牌号的因数。修正后的程序将输出满足条件的车号。希望这个答案对你有帮助!原创 2023-07-03 20:38:38 · 255 阅读 · 1 评论 -
兔子问题c语言
结果我正好去研究了。Final,在了解以上知识点外,深刻认识到了一点————在写程序的时候绝不能按照自己想当然的想法去写代码,这会是极大的隐患,所以我们应该尽量避免这种情况的发生,而是应该写出让所有编译器只会存在一种处理方式的代码。由于printf函数中存在带着副作用的表达式,导致计算机在执行printf过程中判定其为未定义行为,于是不同的编译器对相同的一段代码产生了自己的编译行为,导致了执行顺序不同,最后输出结果也不同了。”而不初始化,那么各个元素的值就不是0了,所有元素都是垃圾值。原创 2023-07-04 22:59:26 · 377 阅读 · 0 评论 -
不同别踩白块代码的区别
两个draw函数分别使用wchar和char,wsprintf和sprintf_s。sprintf_s()是sprintf()的安全版本,通过指定缓冲区长度来避免sprintf()存在的溢出风险。wchar为宽字符节,char为多字符节。wchar为unicode字符集,char为多字节字符集。wsprintf 是和 wchar_t配合的。sprintf 是和 char 配合的。swprintf是c库函数,用法和sprintf一样(格式都一样)。用常量给wchar_t赋值是,需要在常量前面加L。原创 2023-08-03 23:46:37 · 47 阅读 · 0 评论 -
8.29c++学习记录
1.一般情况下,调用函数会开辟栈空间,函数结束时会关闭相应栈空间,而内联函数不会调用函数,不存在调用栈空间,适合于(1).函数代码体积不大(不超过10行)(2).频繁使用的函数的时候使用,递归函数编译器未必让他内联。相比之下,成员函数是类中定义的其他函数,它们可以访问类的私有成员变量并执行特定的操作。总之,构造函数用于初始化类的对象,确保它们以正确的状态进行操作,而成员函数则用于执行类的特定操作。可以用指向它的指针。构造函数的目的是创建和初始化对象,因此,其返回类型应该是与类本身相同的类型,即类名。原创 2023-08-29 14:49:46 · 52 阅读 · 1 评论 -
9.4学习记录
也就是说,如果类A是类B的友元类,并且类B是类C的友元类,那么类A不一定是类C的友元类。1.在C++中,友元(friend)是一种特殊的关系,它允许一个类中的成员函数或者其他类的成员函数或整个类访问另一个类的私有成员和保护成员。无序的友元是指一个类A声明另一个类B为它的友元类,但是类B没有声明类A为它的友元类。友元关系是单向的,也就是说,如果一个类A是另一个类B的友元类,那么类B不一定是类A的友元类。是一个指向当前对象的指针,它可以在类的成员函数中使用,用于引用当前对象的成员变量和成员函数。原创 2023-09-04 16:01:52 · 60 阅读 · 1 评论 -
9.4学习记录新
创建Derived类实例时,会首先调用Base类的构造函数,输出"Base constructor x=1",然后初始化Derived类的y变量并输出"Derived constructor y=2"。当主函数结束时,会销毁Derived类的实例并输出"Derived destructor...",然后销毁Base类的实例并输出"Base destructor..."。当主函数结束时,会销毁D类的实例并输出相应的消息,然后销毁C类的实例并输出相应的消息。是两种访问修饰符,它们决定了类成员的访问权限。原创 2023-09-04 16:52:49 · 33 阅读 · 1 评论 -
9.5学习记录
在C++中,一个类可以派生出多个派生类,每个派生类都可以继承基类的成员变量和成员函数,并且可以在派生类中添加新的成员变量和成员函数。类D同时从类B和类C公有派生,这使得类D成为类B和类C的派生类。然而,需要注意的是,在这种情况下,类D会同时继承来自类B和类C的类A的成员。类的使用者不能直接访问类的私有成员,需要通过类的公有成员函数或友元函数来实现对私有成员的访问。总之,C++中的派生类是一个基于已有的类创建新类的方法,可以继承基类的成员变量和成员函数,并且可以在派生类中添加新的成员变量和成员函数。原创 2023-09-05 11:39:05 · 43 阅读 · 0 评论 -
9.6学习记录
子类必须提供这些抽象函数的实现。当删除派生类对象时,虚析构函数会确保先调用派生类的析构函数,然后再调用基类的析构函数。当使用基类的指针删除派生类对象时,如果基类没有包含虚析构函数,则只会调用基类的析构函数,这可能导致派生类资源没有被正确释放,从而产生资源泄漏。声明Employee的print为虚函数,则可访问到Manager的print函数,非虚函数,则只能访问到Employee的print。总结一下,虚析构函数主要用于解决基类的指针指向派生类对象,并用基类的指针删除派生类对象时可能出现的资源泄漏问题。原创 2023-09-06 13:33:03 · 48 阅读 · 1 评论 -
9.7c++学习记录(7)
和 Complex Complex::operator+(Complex b,Complex c) { return Complex(r + b.r, i + b.i);成员初始化列表可以直接将参数的值传递给成员变量,而赋值运算符则需要先创建局部变量,然后再将局部变量的值赋给成员变量。在性能方面,成员初始化列表通常比赋值运算符更高效,因为它可以直接将参数的值传递给成员变量,而不需要创建额外的局部变量。另外,注意到在你的代码中,无论哪个函数,它们都使用了相同的返回类型和构造函数的参数。原创 2023-09-07 18:50:30 · 42 阅读 · 0 评论 -
9.8学习记录
【代码】9.8学习记录。原创 2023-09-08 20:51:38 · 62 阅读 · 1 评论 -
9.11学习记录
然而,有时候你可能需要对特定类型的模板进行一些特殊的处理。栈在许多算法和程序设计中都有应用,例如在计算机科学中的深度优先搜索,括号匹配,后缀/中缀/前缀表达式的求值,函数调用和递归等场景中。类模板特化是一种声明一个模板的特殊行为的方式,当模板被特定类型的参数实例化时,这个特殊行为就会发生。总的来说,类模板特化提供了一种在保持代码复用的同时,能够对特定类型进行特殊处理的方法,这是泛型编程中的一个强大工具。在日常生活中,我们可以将栈理解为一种累积或者堆积的方式,比如叠盘子,最后放上去的盘子将是第一个被取走的。原创 2023-09-11 21:16:05 · 43 阅读 · 0 评论 -
9.12学习记录
在许多编程语言中,你都可以找到类似的实现。我将为你列举一些常见的编程语言及其对应的 map 容器库,并简要介绍如何使用它们。这部分代码并且程序能够成功运行,可能是因为你在函数中没有实际抛出任何异常,或者你没有在程序中捕获这些异常。如果你移除了这个声明,编译器将无法知道函数可能会抛出哪些类型的异常,因此会报错。然而,如果你希望函数能够抛出异常并在调用该函数的地方捕获这些异常,那么你需要保留。这部分代码,程序仍然能够成功运行,那么可能是因为你没有在函数。留空,这样编译器将认为该函数不会抛出任何异常。原创 2023-09-12 11:10:10 · 36 阅读 · 0 评论 -
qt编译得到的exe文件无法运行
先是显示缺一个libgcc_s_dw2-1.dll,加入该dll后,显示无法运行,我们需要这样设置环境变量。注意qt的bin在strawberry的bin前面。原创 2023-09-13 23:44:48 · 551 阅读 · 1 评论 -
qt学习记录9.20
2.在Qt中,'emit'是一个关键字,用于发出信号。Qt的信号和槽机制是Qt的核心特性之一,它用于对象之间的通信。当某个特定事件发生时,一个对象可以发出一个信号,而其他对象可以连接到这个信号,从而知道这个事件发生。例如,如果你有一个名为'mySignal'的信号,你可以使用'emit mySignal();qDebug是一个全局函数,可以直接输出调试错误信息,方便程序员调试程序,查找错误。1.在写自己的信号与槽时,在头文件中声明槽函数,在相应的cpp文件中定义槽函数。原创 2023-09-20 21:28:12 · 72 阅读 · 0 评论