问题 windows中出现"无法解析的外部符号"到底是什么原因? 原因应该有好多种,今天,我将别人的一段Qt代码从Ubuntu 18.04中移植到windows中,结果就出现了这个问题,百思不得其解,之后发现原因如下: 原因 在头文件中,函数已经声明,但是没有写实现。 各位朋友如果也遇到这类情况,不妨看看是不是这个原因。
问题 windows中出现"无法解析的外部符号"到底是什么原因? 原因应该有好多种,今天,我将别人的一段Qt代码从Ubuntu 18.04中移植到windows中,结果就出现了这个问题,百思不得其解,之后发现原因如下: 原因 在头文件中,函数已经声明,但是没有写实现。 各位朋友如果也遇到这类情况,不妨看看是不是这个原因。
new,delete,malloc,free之间的关系是什么?请看一下四点。 1:malloc和free是C的标准函数库,new和delete是C++运算符,都可以申请动态内存和释放内存,new自动分配,malloc手动计算字节数。 2:malloc和free不能自动完成执行构造函数和析构函数,new和delete不是函数库,能进行构造和析构的调用进而对内存进行更加详细的工作。 3:new是类型安全的,malloc不是。new在编译出错时候会报错,malloc不会报错。 4:new的功能能够覆盖malloc,为何保 […]
有些时候,在将纯C++代码,用Qt重写时候,不知道一些数据类型到底在Qt中用什么表示?下面总结记录下,方便以后查看。 Qt类型对应 signed char : qint8; /* 8 bit signed */ unsigned char : quint8; /* 8 bit unsigned */ short : qint16; /* 16 bit signed */ unsigned short : quint16; /* 16 bit unsigned […]
格式: switch (表达式){ case 值1 : 语句1 break; case 值2 : 语句2 break; ... default : 语句n break; } 代码实例: int i = 1; int a; switch (i){ case 0 : a = 100; break; case 1 : a = 200; break; default : a = 300; break; }
在写头文件的时候,经常会有一些 class QFile 等这类,看似是声明的东西。例如下面: #ifndef WINDOW_H #define WINDOW_H QT_BEGIN_NAMESPACE class QTcpServer; class QTcpSocket; class QProgressBar; class QLabel; class QDialogButtonBox class QFile ... 如果没有 声明 将会 出现类似下面的错误 ISO C++ forbids declaration of […]
这是一个关于“二级指针输出的特性”的实例,这是基础,多看多练有助于提升理解! 实例: #include <stdio.h> #include <string.h> #include <stdlib.h> struct Person{ char name[64]; int age; }; void allocate_memory(struct Person ** person) { struct Person * temp = (struct Person*)malloc(size […]
C/C++字符串反转的实例: #include <stdio.h> #include <stdlib.h> #include <string.h> //字符串反转 void re_string(char * str) { int len = strlen(str); int left = 0; int right = len-1; while(left < right) { int tmp = str[left]; str[left] = str[right]; str[r […]
功能: 把格式化的数据写入某个字符串缓冲区。 头文件: stdio.h 函数原型: int sprintf( char *buffer, const char *format [, argument] … ); 参数列表: buffer:char型指针,指向将要写入的字符串的缓冲区。 format:格式化字符串。 [argument]...:可选参数,可以是任何类型的数据。 返回值: 返回写入buffer 的字符数,出错则返回-1. 如果 buffer 或 format 是空指针,且不出错而继续,函数将返回-1,并 […]
C++程序子类析构时会调用父类的析构函数 析构函数调用的次序是先派生类的析构后基类的析构,也就是说在基类的的析构调用的时候,派生类的信息已经全部销毁了定义一个对象时先调用基类的构造函数、然后调用派生类的构造 函数;析构的时候恰好相反:先调用派生类的析构函数、然后调用基类的析构函数。 析构函数: 析构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析 […]
封装,继承和多态 封装 封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 继承 面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”。 被继承的类称为“基类”、“父类”或“超类”。 继承的过程,就是从一般到特殊的过程。 要实现继承 […]
一 | 二 | 三 | 四 | 五 | 六 | 日 |
---|---|---|---|---|---|---|
« 7月 | ||||||
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |