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、引用(从一而终)
类型名 & 引用名 = 同类型的某变量名
注意:①定义引用时一定要将其初始化成引用某个变量
②初始化后,它就一直引用该变量...
RTTI运行期标识对象的型式信息优势:允许使用指向基类的指针或引用自如地操作派生类的对象typeid:获取表达式的型式;type_info:型式信息类头文件:typeinfo对象转型模板dynamic_cast:动态转型static_cast:静态转型reinterpret_cast:复诠转型const_cast:常量转型typeid操作符与type_info类type_info类编译器实现的动态型式信息型式用于在程序运行时保存数据对象的型式信息不能直接使用该类,只能通过typeid操作符调用成员函数name()...
C++之父Bjarne Stroustrup在《The C++ Programming Language》中讲到:一个库的作者可以检测出发生了运行时错误,但一般不知道怎样去处理它们(因为和用户具体的应用有关);另一方面,库的用户知道怎样处理这些错误,但却无法检查它们何时发生(如果能检测,就可以再用户的代码里处理了,不用留给库去发现)。Bjarne Stroustrup说:提供异常的基本目的就是为了处理上面的问题。基本思想是:让一个函数在发现了自己无法处理的错误时...
C++异常是对程序运行过程中发生的异常情况(如被0除)的一种响应。异常提供了将控制权从程序的一个部分传递到另一部分的途径。1、对异常的处理有3个部分组成:(1)引发异常(2)捕获有处理程序的异常(3)使用try块C++异常的简单例子:double hmean(double a,double b)
{if (a == -b)throw "bad hmean() arguments: a = -b not allowed";//引发异常return 2.0 * a * b / (a + b);
}void test_exception()
{double x, y, z;cout <<...
一、初始化string对象: 直接初始化:string a("value"); 拷贝初始化:string a = "value";二、读写string对象 注:cin会忽略头尾空白处,保留空白符需要使用getline; empty函数判断是否为空,size函数计算字符串长度。 不能把多个字面值直接相加赋值给string对象,字符串字面值不是string对象。三、范围for语句的使用string str("some,string!!!");for(auto c : str){co...