随笔分类 - C++学习
摘要:因为利用QByteArray可以很方便的利用其API对内存数据进行访问和修改, 构建数据库blob字段时必不可少; 那如何向blob内写入自定义的结构体和类 //自定义person结构体 memcpy只能处理字段为基本类型的结构体, 当使用QString name, 我用person->name去访
阅读全文
摘要:在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问题呢? new 和 delete 是函数吗? new [] 和 delete [] 又是什么?什么时候用它们? 你知道 operator new 和 operator delete 吗? 为什么 new
阅读全文
摘要:QList<T> 的释放分两种情况: 1.T的类型为非指针,这时候直接调用clear()方法就可以释放了,看如下测试代码 #include <QtCore/QCoreApplication> #include <QList> #include <QString> int main(int argc,
阅读全文
摘要:最近在几经波折之后,终于对于boost::bind有点理解了。对于习惯了其他语言的人来说,boost::bind是个挺神奇的东西,它可以将你的方法适配成任何其他的方法。其实这得益于c++的模板以及操作符重载,去看boost::bind的实现就会发现它是一个有n多重载的函数,这些重载主要是为了适应函数
阅读全文
摘要:假设有一个Date类 Date.h class Date { private: int year, month, day; }; 如果有个Task类的定义要用到Date类,有两种写法 其一 Task1.h class Date; class Task1 { public: Date getData(
阅读全文
摘要:关于类中的引用、常量、静态常量的初始化 不过 下面所说的在新的 c++11中,已经有所改变。 比如程序中: static const double csd2 = 99.8; // error: 只有静态常量整型数据成员才可以在类中初始化已经可有在类中初始化了 关于这点,可以参考 这个博客 :http
阅读全文
posted @ 2016-10-19 22:46
ZYVV
摘要:C++:STL标准入门汇总 第一部分:(参考百度百科) 一、STL简介 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来
阅读全文
摘要:0.前言 模板是一种通用的描述机制,当使用模板时,允许使用通用类型来定义函数或类。通用类型可被具体类型(如int,double甚至是用户自定义类型)来代替。模板引入了一个全新的编程思维方式,称为“泛型编程”或者“通用编程”。 1.函数模板 1)函数模板声明形式如下: class用于定义类,在模板引入
阅读全文
摘要:1.多态与虚函数 多态性是指同一个操作作用于不同的对象就会产生不同的响应。多态性分为静态多态性和动态多态性,其中函数重载和运算符重载属于静态多态性,虚函数属于动态多态性。 一旦一个函数被声明为虚函数,无论经历多少次派生,都会保持虚函数的特性,即使派生类中没有使用virtual关键字,其仍然是虚函数。
阅读全文
摘要:1.构造函数和析构函数的执行顺序 下图是多虚基类的情况,其中A和B类是类C和类D的虚基类,类E是类C和类D的派生类。 各类定义可以简写如下: 各类构造函数简写如下: 在创建E类对象时,按从左到右深度优先遍历算法来调用各个构造函数:A --> B --> C --> D --> E 析构函数的执行顺序
阅读全文
摘要:由其他类型转换到自定义类型 由其他类型(如int,double)向自定义类的转换是由构造函数来实现,只有当类的定义和实现中提供了合适的构造函数,转换才能通过。 输出结果如下: 代码中第57行,构造函数“point(authorPoint aP)”被调用,先生成一个临时point类对象,再调用赋值运算
阅读全文
摘要:1.运算符重载规则 在c++中,操作符和函数时等价的,统一的。因此,运算符也可以重载,虽然系统已经预定了一些操作符的功能,但毕竟应用有所限制,不能灵活得解决各种问题,而运算符重载可以赋予已有的运算符多重含义。通过重新定义运算符,使它能够用于特定类的对象执行特定的功能,使得c++具有很强的可拓展性。
阅读全文
摘要:友元函数: 如果在某个类的定义中用friend声明了一个外部函数,这个外部函数称为类的友元函数。 友元函数的声明可以放在类的私有部分,也可以放在公有部分,它们没有区别,都说明是该类的友元函数;一个函数可以使多个类的友元函数,只需在各个类中分别声明;友元函数的调用和一般函数的调用方式和原理一致。 对于
阅读全文
摘要:Typedef用途: 1.定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: 2.用在旧的C的代码中,替换结构名,简化代码书写。 3.用typedef来定义与平台无关的类型。 4.为复杂的声明定义一个新的简单的别名。 理解复杂声明可用的“右左法则”:从变量名看起,先往
阅读全文
摘要:1.register声明的变量为寄存器变量,因此没有地址,不能对它取地址操作。 2.【用错sizeof】当数组作为函数参数传递时,数组会退化为同类型的指针。 3.每个成员在成员初始化列表中只能出现一次,初始化的顺序不是由名字在初始化列表中的顺序决定,而是由成员在类中被声明的顺序决定。 输出结果如下:
阅读全文
摘要:C++11中引入的auto主要有两种用途:自动类型推断和返回值占位。auto在C++98中的标识临时变量的语义,由于使用极少且多余,在C++11中已被删除。前后两个标准的auto,完全是两个概念。 1. 自动类型推断 auto自动类型推断,用于从初始化表达式中推断出变量的数据类型。通过auto的自动
阅读全文
摘要:Inline函数使用注意事项 1.在一个文件中定义的inline函数不能再另一个文件中使用 2.inline函数应简洁,只有少数几个语句。 3.在inline函数中不能有循环,if,switch语句。 4.inline函数要在调用和声明前定义!!!
阅读全文
摘要:结构体字节对齐准则: 1. 结构体变量的首地址能够被其最宽基本类型成员的大小所整除; 2. 结构体每个成员相对于结构体首地址的偏移量都是当前成员大小的整数倍,如有需要编译器会在成员之间加上填充字节; 3. 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充
阅读全文
摘要:数组与指针的区别 1.数组与指针的定义 指针是变量,存储的是一个地址,用来间接访问数据,在32位系统下占用4个字节。指针可以指向任何内存空间,但不是任何内存空间都可以通过指针去访问(不能访问寄存器)。 数组是标识符且不占用存储空间,类似于常量,因此数组名不能作为左值。 2.extern数组与指针 先
阅读全文
摘要:C++中const与指针 1.常指针: 2.指向常量的指针 3.指向常量的常指针
阅读全文

浙公网安备 33010602011771号