学习笔记
delphi863
这个作者很懒,什么都没留下…
展开
-
c++ 布尔运算
bool b=true;bool b2=-b;那么b2 是true?还是false?对于大多数运算符来说,布尔类型的运算对象将被提升为int类型,如上所示,布尔变量b的值为真,参与运算时将被提升为整数值1,对它求负后的结果时-1,显然-1不等于0,所以b2的值为真。...原创 2021-12-14 15:30:59 · 1675 阅读 · 0 评论 -
c++ vector初始化易混淆的地方
在某些情况下,初始化的真实含义依赖于传递初始值时用的是花括号还是圆括号,例如,用一个整数来初始化vector<int>时,整数的含义可能是vector对象的容量也可能是元素的值。类似的,用两个整数来初使化vector<int>时,这两个整数可能一个是vector对象的容量,另一个是元素的初值,也可能它们是容量为2的vector对象中两个元素的初值。通过使用花括号或圆括号可以区分上述这些含义:vector<int>v1(10);//(圆括号) v1有10个元素,每个的值原创 2021-12-14 11:14:38 · 569 阅读 · 0 评论 -
指向指针的指针
int main() { int ival = 42; int* p = &ival; int** pp = &p; cout << p << endl; //指针值(地址) cout << *p << endl; //指针指向的内容值 cout << pp << endl; //指针值(地址) cout << *pp << endl;//...原创 2021-12-13 14:44:45 · 695 阅读 · 0 评论 -
c++11 中的原始字面量
原始字面量就是不进行转义的完整字符串。原始字符串字面量的定义为:R “xxx(raw string)xxx”原始字符串必须用括号()括起来,括号的前后可以加其他字符串,所加的字符串会被忽略,并且加的字符串必须在括号两边同时出现。int main(){ string str=R"xxx(c\n\n)xxx"; cout << str << endl; system("pause"); return 0;}去掉R 后int m...原创 2021-12-10 11:17:12 · 587 阅读 · 0 评论 -
c++字符数组的定义及初始化
定义时进行初始化:char ch[20]="cpp"; //okcout << ch << endl;仅定义不初始化char ch[20];ch = "cpp";//出现”表达式必须是可修改的左值“的错误提醒,编译报错“不可指定数据类型”。可以使用strcpy(ch, "cpp"); 进行赋值也可以单个字符赋值char ch[20];ch[0] = 'c';ch[1] = 'p';ch[2] = 'p';ch[3] = '...原创 2021-12-10 10:35:16 · 1132 阅读 · 0 评论 -
c++中字符数组和string类型的相互转换
字符数组转化成string类型charch[]="china";stringstr(ch);//等效 stringstr=ch;或者charch[]="china";stringstr;str=ch;string类型转换为字符数组 char ch[20];string str = "china";strcpy_s(ch, str.c_str());string str2(ch);cout << str2 <<...原创 2021-12-10 10:17:05 · 2844 阅读 · 0 评论 -
C++ const 和 constexpr 的区别
对于修饰Object来说,const并未区分出编译期常量和运行期常量constexpr限定在了编译期常量然后我想对修饰函数多说两句,那就是constexpr修饰的函数,返回值不一定是编译期常量。#It is not a bug, it is a feature.#constexpr int foo(int i){ return i + 5;}int main(){ int i = 10; std::array<int, foo(5)> arr; /...转载 2021-12-09 09:57:27 · 113 阅读 · 0 评论 -
c++交换函数 的三种传值方式的异同
函数1:void swap(int a, int b){ int c; c = a; a = b; b = c;}这种方式为值传递,函数内拷贝值,并不能进行交换!!!!!!函数2:void swap(int *a,int *b){ int c; c = *a; *a = *b; *b = c;}指针传递,调用的时候需要把参数的地址传进去:int x =10,y = 20;swap(&x,&y)...原创 2021-12-07 14:43:53 · 106 阅读 · 0 评论 -
c++ 指针类型的引用
通常理解为引用就是类型前面加个&符号例如int i=2;int &a=i;如果时指针类型的引用让人看起来就很困惑了,int a = 3;//定义变量a;int* p = &a; //等效于 int *p=&a;int* &q = p; //等效于int *&q = p;由于c++ 中对* 号和& 号,是靠近类型侧还是变量名侧并没有要求,所以写法可以有多种,理解起来很困惑,甚至有写出 int & *...原创 2021-12-07 14:27:13 · 1395 阅读 · 0 评论 -
c++中引用一经定义不能更改转而引用其他变量的理解
c++中对引用的定义和说明:引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量,对引用的操作与对变量直接操作完全一样。定义格式为:类型 &引用变量名 = 已定义过的变量名。引用的特点: ①一个变量可取多个别名。 ②引用必须初始化,只有别名是不能成立的。(如果不初始化,编译器出错警告) ③引用只能在初始化的时候引用一次 ,不能更改为转而引用其他变量。如下示例:#include <原创 2021-12-07 13:14:37 · 2796 阅读 · 1 评论 -
指针的指针和指针的引用
为什么需要使用它们当我们把一个指针做为参数传一个方法时,其实是把指针的复本传递给了方法,也可以说传递指针是指针的值传递。如果我们在方法内部修改指针会出现问题,在方法里做修改只是修改的指针的copy而不是指针本身,原来的指针还保留着原来的值。我们用下边的代码说明一下问题:转载 2021-12-07 09:35:51 · 414 阅读 · 0 评论 -
获取exe可执行文件的绝对路径方法(Qt)
GetModuleFileName函数的应用char exeFullPath[MAX_PATH]; // //用于存放获取的路径信息 string strPath = ""; GetModuleFileName(NULL,exeFullPath,MAX_PATH);//第一个参数为句柄,NULL则指向当前程序。第二个参数用于存放地址的指针,第三个参数,系统自带的宏定义 strPath=(string)exeFullPath; // 路径赋给字符串str int p...原创 2021-10-20 13:38:02 · 878 阅读 · 0 评论 -
QT tcp服务器及客户端 传输图片及显示
上一节里我们使用TCP服务器和客户端相互发送字符串信息,本节间学习图片的传输及显示。一、服务器端程序开始进行监听,一旦发现有连接请求就发出newConnection()信号,然后我们便接受连接,可以接收数据。步骤1.新建QtGui应用名称为tcpServer,基类选择QWidget,类名为Widget,完成后打开tcpReceiver.pro添加一行代码:QT += network 。步骤2.我们更改widget.ui文件,设计界面如下。其中“服务器端”Label的objectN..原创 2021-07-26 14:54:14 · 6814 阅读 · 4 评论 -
QT tcp 简单服务端和客户端传输字符串(QDataStream 序列化)
一、服务器端 在服务器端的程序中,我们绑定本地主机的一个端口,例如这里使用6666。步骤1:新建QtGui应用项目名为tcpServer,基类选择QWidget,类名为Widget。完成后打开项目文件tcpServer.pro并添加一行代码:QT += network ,然后保存该文件(ctrl+s)。步骤2:在widget.ui的设计区添加一个Label,更改其显示文本为“等待连接”,然后更改其objectName为statuslab,用于显示客户端是否连接。步骤3:在widget....原创 2021-07-24 17:31:21 · 1847 阅读 · 0 评论 -
类和继承(c++primer plus 学习笔记13章)
1.派生类和基类是一种is-a的关系,即派生类对象也是一个基类对象,可以对基类对象执行任何操作。2.多态:同一个方法(c++中称为函数)在派生类和基类中的行为方式是不同的原创 2021-06-21 11:04:33 · 125 阅读 · 0 评论 -
C++ 指针的理解
1:指针是一个变量,其存储的是值的地址,而不是值本身。(假设int 变量 i 的地址是 10000,值是12。定义一个int指针p,p表示一个地址,p=&i。p内存储的是10000,*p 就是p指向的这块内存的值是12)*p和i是等效的 *p+1得到的值就是13,和i+1的效果等效。p+1和*p+1 完全不一样,p+1 是地址加一,会指向另外一块内存,*p+1 则是i的值加1。2:int 指针定义 int *p1,p2,p3; 和int* p1,p2,p3;的效果是一样的,它定义了一...原创 2021-06-13 14:33:48 · 296 阅读 · 0 评论 -
Qt学习之路学习笔记2
1、对方框(模态对话框和非模态对话框)void MainWindow::open(){ QDialog *dialog = new QDialog; dialog->setWindowTitle(tr("Hello, dialog!")); dialog->show();}这样在堆上建立的对方框,如果多次点击会生成多个相同的对方框,如何保证只有一个呢???在头文件把 定义为QDialog dialogvoid MainWindow::open...原创 2021-05-21 17:50:38 · 101 阅读 · 0 评论 -
Qt学习之路学习笔记1
Qt学习之路的学习要点1.堆和栈的区别2.智能指针(QScopedPointer)3.设计模式4.信号槽中main函数使用connect,去掉QObject出现的错误及解析(QT程序中的事件机制是通过SIGNAL-SLOT(信号-槽)来实现的,创建一个信号与槽的连接就是使用connect方法,它是QObject类下面的一个静态方法,基本上,所有的QT对象的基类都是QObject,所以,在非QObject的派生类下面使用connect方法需要指定QObject类,即使用QObject::con原创 2021-05-21 15:19:44 · 140 阅读 · 0 评论