C++ GUI Qt4学习笔记05 qtc++正则表达式QIntValidator -- 只让用户输入整数QDoubleValidator -- 只让用户输入浮点数QRegExpValidator -- 只让用户按照正则表达式定义好的样式进行输入 本章讲解如何使用Qt开发自定义窗口部件。通过对一个已经存在的Qt窗口部件进行子类化或者直接对QWidget进行子类化,就可以创建自定义窗口部件。集成自定义窗口到Qt设计师中,这样就可以像使用内置的Qt窗口部件一样来使用它们。...
C++ 98的 std::auto_ptr已经被彻底遗弃了,取而代之的是unique_ptr、shared_ptr与weak_ptr。大部分时候我们自己手动申请内存方式内存都是没有问题的,问题是如果程序很大了之后,一个复杂的对象,多次拷贝的代价非常高,很多地方都会使用到,只存在一份拷贝显然是最好的,这个时候对象生命周期的管理就会很复杂,所以c++引入了智能指针。 任何事物都会有两面性。 Shared_ptr摘录于Effective C++, 3rd Edition, Item 17: 在 standal...
第二章 从C到C++ 2.1main函数1.C++中需要写int main()不能只是main()2.main()函数里面最后有一个return 0;3.main()被启动代码调用,而启动代码是编译器添加到程序中的,是程序和操作系统的桥梁。4.C++中main()中的括号空着与void是等效的,都代表不接受参数,在C中是不等效的,括号中空着没有参数代表对是否接受参数保存沉默。2.2 预处理和iostream文件1.#include <iostream>这句预处理在源代码编译之前把iostream文件的内...
/****************************************************************//* 学习是合作和分享式的!/* Author:Atlas Email:wdzxl198@163.com /* 转载请注明本文出处:* http://blog.csdn.net/wdzxl198/article/details/9112123/****************************************************************/上期内容回顾:C++内存管理学习笔记(4) 2.1-2.2 RAII规则(引入) 2.3 smart pointer 2....
1.Triangular t=8;这句是调用单参数的构造函数2.copy constructor VS copy assignment operator3.const修饰符紧接于参数列表之后,而且函数声明和函数定义比较同时指定const。const方法中如果修改了类成员会报错。4.非const对象可以调用非const方法和const方法,但const对象就只能调用const方法,不能调用非const方法。5.非成员函数不容许使用const修饰符。 6.const也可以用来重载 int readIndex() const; int readIndex(); 7.cons...
C++11<?xml:namespace prefix = "o" />1.long long新类型2.列表初始化 int t=0; int t={0}; int t(0); int t{0}; 注意:如果我们使用列表初始化有丢失信息的风险,则编译器报错 long double ld=3.1415926536; int a{ld},b={ld};//错误 int c(ld),d=ld;//正确,会丢失数据3.空指针nullptr int *p1=nullptr; int *p2=0; int *p3=NULL;//尽量避免4.constexpr类型...
一. 引言 在算法以及数据结构的实现中,很多地方我们都需要队列(遵循FIFO,先进先出原则)。 为了使用队列,我们可以自己用数组来实现队列,但自己写太麻烦不说,并且还很容易出错。 好在C++的STL(标准模板库)为我们实现了一个强大的队列,它包含在头文件<queue>中。二. queuea) 构造函数下面用例子来展示queue的构造函数 deque<int> deck(3,100);list<int> mylist(2,100);queue<int> first;//默认构造queue...
基本概念虚函数是在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数,用法格式为:virtual 函数返回类型 函数名(参数表) {函数体};C++中用它来实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数。虚函数实现机制虚函数是如何做到因对象的不同而调用其相应的函数的呢?现在我们就来剖析虚函数。我们先定义两个类class A{//虚函数示例代码
public:
virtual voidfun(){cout<<1<<endl...
动态内存分配其实在学C语言的时候,我们就已经用malloc函数去实现了,当然在C++里也有新的方法。
今天学习的是在C++环境下的动态内存的分配。用new运算符实现动态内存分配有这么两种用法:
1.分配一个变量
exp.P=new T;
其中 T:任意类型名
P:类型为T*的指针
动态分配出一片大小为sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P。
exp.int *pn;
pn=new int;
*pn=5;2.分配一个数组
exp.P=new T[N];
其中 T:任意类型...
1、 除法 对计算机而言,整数除法的结果必须是整数。计算机取整数部分的方式有如下几种: ① 向下取整 如:-3.5=>-4;3.5=>3; ② 向上取整 如:-3.5=>-3;3.5=>4; ③ 向零取整 如:-3.5=>-3;3.5=>3; C++和大多数高级语言,对整数除法都规定向零取整。 整数除法的几种情况: ① 常量除以常量 ② 变量除以常量(常量值为2的幂) ③ 变量除...
***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************五、Implementations Rule 27:Minimize casting规则 27:尽量少做转型动作1.一些基础
C++规则的设计目标之一 —— 保证“类型错误”绝对不可能发生。
理论上,如果程序很"干净地"通过编译,就表示它并不企图在任何对象身上执行任何不安全、无意义、愚蠢荒谬的操作。
But,转型(cast)破坏了类型...
模板类vector是一个封装了动态大小数组的顺序容器,它所控制的序列是以连续数组的方式存储的。跟任意其它类型容器一样,它能够存放各种类型的对象。包含头文件#include <vector> 声明命名空间using namespace std;特性: 1)顺序序列:容器中的元素按照严格的线性顺序排序。可以通过元素在序列中的位置访问对应的元素。 2)动态数组:支持对序列中的任意元素进行快速直接访问。操供了在序列末尾相对快速地添加/删除元素的操...
转载:http://dsqiu.iteye.com/blog/1669614 第一章 关于对象 使用class封装之后的布局成本:class并没有增加成本,data members直接内含在每一个class object之中,就像C struct一样。而member functions虽然被包含在class的声明之内,但是不出现在Object之中。每一个non-inline function 只会产生一个函数实体。至于inline function则会在每一个调用使用的地方产生一个函数实体(在调用点展开函数体)。class在布局以及存取时间上...
【C语言的Static inline 函数的作用】 【printf打印格式】%x 打印十六进制%d 打印十进制%b 打印二进制%c 打印字符%s 打印字符串%f 打印单精度float%lf 打印双精度double 【关于C++中的类型转换】dynamic_cast: 通常在基类和派生类之间转换时使用,把一个派生类转换为基类使用这个转换,run-time cast const_cast: 转换是去掉const变量的const, 主要针对const和volatile的转换. static_cast: 一般的转换,类似于C/C++里面的强制类...
1、cout输出
cout<<待输出项<<待输出项2<<···;
2、cin输入
cin>>变量1>>变量2>>···;
3、C++程序通常包含的头两行
4、头文件
一些C语句中常用的头文件在C++中的名字变为去掉“.h”,并在开头增加字符c
eg.#include
5、强制类型转换
C++中强制类型转换可以写成:类型名(待转换的表达式)
6、引用(从一而终)
类型名 & 引用名 = 同类型的某变量名
注意:①定义引用时一定要将其初始化成引用某个变量
②初始化后,它就一直引用该变量...