C++基础知识及Linux
分享一些零散的基础
Lantingxwj
这个作者很懒,什么都没留下…
展开
-
字节拷贝和反序时,注意事项
当被拷贝变量的字节数(6字节) 和 拷入变量的字节数(8字节)不相等时,反序操作要格外注意,如果用常规的htonl或者ntohl进行拷贝的话,会出问题,导致值会变化。1.反序 拷贝问题。原创 2022-11-19 20:33:18 · 550 阅读 · 0 评论 -
记录一次htonl和ntohl的使用方法和差别
字节序原创 2022-11-19 16:36:42 · 767 阅读 · 0 评论 -
linux c write函数写入错误,返回 Bad file descriptor
返回错误的文件描述符,原因是因为在open文件的时候未使用O_RDWR(可读可写)对文件进行读写,所以后面写文件会报错。原创 2022-09-06 09:39:24 · 3296 阅读 · 0 评论 -
Qt配置mysql细节及总结
1. 下载Qt:https://download.qt.io/archive/qt/5.15/(注意这点很重要,下载的Qt和Mysql的位数一定要相同,要么都是X86的32位,要么都是X64的64位,不同位的话后面即使你把dll文件放对了位置也找不到数据库驱动)。下面是我Qt的安装包,你可以发现他是X86(32位)的。2. 下载Mysql:https://dev.mysql.com/downloads/windows/installer/8.0.html由于多半大家都会安装X86的Qt,所以安装m原创 2020-06-03 14:18:34 · 1152 阅读 · 2 评论 -
Qt常用快捷键
ctrl + U 选中{}当前括号里面的内容,重复按下,会选中当前行。ctrl+j 减少后面与前面的缩进ctrl + tab 切换文件ctrl+m 某行做标记原创 2020-07-25 15:44:35 · 224 阅读 · 0 评论 -
Qt --Qfile使用
打开文件,读取#include "widget.h"#include "ui_widget.h"#include<QFile>#include<QFileDialog>#include<QFileInfo> //文件信息#include<QDateTime> //必须要这个头文件。输出时见#include<QDebug>W...原创 2020-04-24 12:03:38 · 592 阅读 · 0 评论 -
QT信号和槽与Lambda表达式(自定义信号和自定义槽)--子父窗口的切换和独立窗口
subwidget.h#ifndef SUBQWIDGET_H#define SUBQWIDGET_H#include <QWidget>#include<QPushButton>class SubQWidget : public QWidget{ Q_OBJECTpublic: explicit SubQWidget(QWidget *p...原创 2020-04-15 12:43:06 · 563 阅读 · 0 评论 -
聚合和组合
组合和聚合是有很大区别的,这个区别不是在形式上,而是在本质上:比如A类中包含B类的一个引用b,当A类的一个对象消亡时,b这个引用所指向的对象也同时消亡(没有任何一个引用指向它,成了垃圾对象),这种情况叫做组合,反之b所指向的对象还会有另外的引用指向它,这种情况叫聚合。...原创 2020-03-14 16:14:11 · 103 阅读 · 0 评论 -
运算符重载
注意:重载用到ostream时,不能将ostream对象设为const常量,因为此类的成员需要对其他ostream类的方法进行操作。重载加号: Complex operator+(const Complex& A, const Complex& B) { Complex c; c.m_x = B.m_x + A.m_x; c.m_y = B.m_y + A.m_y; ...原创 2020-03-12 15:02:52 · 76 阅读 · 0 评论 -
C++学习笔记----3.2 C++引用在本质上是什么,它和指针到底有什么区别
从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。在C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数和引用传递参...转载 2020-02-04 23:22:30 · 639 阅读 · 0 评论 -
C++ string字符串类详解
string 是 C++ 中常用的一个类,它非常重要,我们有必要在此单独讲解一下。#include <iostream>#include <string>using namespace std;int main(){ string s1; string s2 = "c plus plus"; string s3 = s2; stri...转载 2020-02-04 00:18:43 · 208 阅读 · 0 评论 -
友元函数及友元类详解
在 C++ 中,一个类中可以有 public、protected、private 三种属性的成员,通过对象可以访问 public 成员,只有本类中的函数可以访问本类的 private 成员。现在,我们来介绍一种例外情况——友元(friend)。借助友元(friend),可以使得其他类中的成员函数以及全局范围内的函数访问当前类的 private 成员。友元函数在当前类以外定义的、不属于当前类的函...转载 2020-02-02 23:15:57 · 568 阅读 · 0 评论 -
const常量函数详解
在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定。const 可以用来修饰成员变量和成员函数。const成员变量const 成员变量的用法和普通 const 变量的用法相似,只需要在声明时加上 const 关键字。初始化 const 成员变量只有一种方法,就是通过构造函数的初始化列表,这点在前面已经讲到了,请猛击《C++初始化列表》回顾。const成员函数(常成员函数)...转载 2020-02-02 18:25:41 · 1460 阅读 · 0 评论 -
静态成员函数详解
在类中,static 除了可以声明静态成员变量,还可以声明静态成员函数。普通成员函数可以访问所有成员(包括成员变量和成员函数),静态成员函数只能访问静态成员。编译器在编译一个普通成员函数时,会隐式地增加一个形参 this,并把当前对象的地址赋值给 this,所以普通成员函数只能在创建对象后通过对象来调用,因为它需要当前对象的地址(this指针就是当前对象的地址)。而静态成员函数可以通过类来直接调...转载 2020-02-02 18:10:48 · 6295 阅读 · 0 评论 -
c++堆,栈的存储方式及代码内存分配
使用对象指针C语言中经典的指针在 C++ 中仍然广泛使用,尤其是指向对象的指针,没有它就不能实现某些功能。Student stu;Student *pStu = &stu;上面代码中创建的对象 stu 在栈上分配内存,需要使用&获取它的地址,例如:Student stu;Student *pStu = &stu;pStu 是一个指针,它指向 Student 类型...转载 2020-01-31 12:18:19 · 431 阅读 · 0 评论 -
多态与虚函数
1.静态联编是编译时的联编,也称编译时的束定,静态束定。#include<stdio.h>class Point{.....double Area(){return 0;}.....};class RectAngle: public Point{......double Area(){retun m_fw *m_fh;}......};void Func(...原创 2019-03-18 18:34:19 · 276 阅读 · 1 评论 -
赋值运算符重载
C++重载赋值操作符1、C++中重载赋值操作函数应该返回什么? 类重载赋值操作符一般都是作为成员函数而存在的,那函数应该返回什么类型呢?参考内置类型的赋值操作,例如 int x,y,z; x=y=z=15; 赋值行为相当于x=(y=(z=15)),也就是赋值操作应该返回左操作数的引用,因此,为了和内置类型兼容,类中重载赋值操作符应该返回左操作数的引用,即*this,如下类A的重载赋值操...转载 2019-03-17 20:33:56 · 235 阅读 · 0 评论 -
二维数组的初始化
例如:int a[3][4]={{1,2,4,5},{3,2,9,6},{8,7,5,4}};代码说明:数组被初始化如下的数据:a[0][0] =1 a[0][1] = 2 a[0][2] = 4 a[0][3]=5a[1][0] = 3 a[1][1] = 2 a[1][2]=9 a[1][3]=6a[2][0] = 8 a[2][1...原创 2019-03-17 20:07:48 · 720 阅读 · 0 评论 -
struct结构体对齐和Union联合体的sizeof值
#include <QCoreApplication>#include<iostream>using namespace std;int main(int argc, char *argv[]){ struct B{//1.按最大对齐double 8。 2.结构体对齐严格遵循变量顺序。 char a;//1 看下一个变量,若加起来小于或最大对齐数,则补齐,等于不补。 char c;//1 short b;//2原创 2020-11-12 10:40:56 · 356 阅读 · 1 评论 -
子父进程之间的通信--消息队列,共享内存
题目:当程序运行时,父进程fork出4个子进程。父进程负责产生消息(每1s产生一个消息),4个子进程负责处理消息。父子进程之间通过消息队列来传递消息。父进程需要维护一个本地数据库(格式与共享数据库相同),当生成一个消息时,父进程要同步更新本地数据库。子进程在处理消息时,根据消息的内容来对共享数据库进行更新(比如,当一个子进程收到一个[index=2, op=increase]的消息时,需要将共享数据库中index为2的条目的count值递增1),并延迟500ms。父进程需要处理SIGT.原创 2021-05-10 10:16:25 · 1618 阅读 · 0 评论 -
sizeof运算符注意事项
sizeof是计算数据类型或数组所占字节数量。int a[] = { 1,2,3,4 };cout << sizeof(a)<<endl;特别需要注意的是:在将数组传入函数时,传入的是其首地址,所以对数组形势参数进行运算时结果是数组元素个数。void fun(char mem[], int num){ cout << sizeof(mem)<<endl; //结果为4,即使mem为int也为4 for (int i = 0; i < s原创 2020-07-25 11:10:52 · 169 阅读 · 0 评论 -
string class操作
C++ 使用 string 类处理字符串1.string类中的函数(1) 构造(2) 追加(3) 赋值(4) 位置与清除(5) 长度与容量(6) 比较(7) 子 串(8) 搜索(9) 运算符2. 注意事项操作string对象中的字符串内容时,有时会用到“index”。很多string的函数接受两个数字...原创 2020-05-05 09:37:19 · 645 阅读 · 0 评论 -
指针常量和常量指针
常量指针特征:指针所指向的内容不可以通过指针的间接引用(p)来改变。意思是p是右值。例如: const int x = 1; - const int * p1; - p1 = &x; // 指针P1的类型是(const int *)**不能通过*p来修改x的值** - p1 = 10; //error;char* s1 = "hello";//error,因为h...原创 2020-04-10 16:32:07 · 608 阅读 · 0 评论 -
通过STL和仿函数对数组元素排序
什么是仿函数:通过代码进行分析:#include<iostream>#include<iterator>#include<vector>#include<algorithm>using namespace std;#define size 10bool small(int x, int y) { return x > y;...原创 2020-03-31 13:28:38 · 185 阅读 · 0 评论 -
引用的实质及其与指针的关系(通过指针可修改其引用所指向的值)
1.引用作为变量别名而存在,因此在一些场合可以代替指针2.引用相对于指针来说具有更好的可读性和使用性(2)交换函数实现对比①传入指针:#include <iostream>#include <stdio.h>void swap(int* a, int* b){ int t = *a; *a = *b; *b = t;}...转载 2020-03-29 16:36:40 · 434 阅读 · 0 评论