C++
Starry sky
这个作者很懒,什么都没留下…
展开
-
虚函数——C++PrimeCr第五版读书笔记
派生类可以继承基类的成员,然而遇到与类型相关的操作时,派生类必须对其重新定义,换句话说,派生类需要对这些操作提供自己的新定义以覆盖(override)从基类继承而来的旧定义。这些成员函数在基类中通常定义为虚函数(virtual)。当我们使用指针或引用调用基函数 时,该调用将被动态绑定。根据引用或指针的绑定对象的类型不同,该调用可能执行基类的版本,也可能执行某个派生类的版本。简略说明clas转载 2015-08-14 11:03:28 · 606 阅读 · 0 评论 -
输入符>>(C++)
string a;std:: cin >> a;//如果输入“ hello world”,则 a会是hello,以第一个非空字符 作为开始字符,直到遇到下一个空白为止std:: cout原创 2015-11-17 20:36:57 · 358 阅读 · 0 评论 -
using的使用(C++11)
1.定义 类型 别名using D = double;//D 就是 类型double的别名 ,等价于typedef double D;2.说明 命名空间using namespace:: std ;//使用命名空间 stdusing std::cin;// 程序中出现的 cin 属于 std命名空间注意:头文件中 不要使用 using,因为头文件会被其原创 2015-11-17 20:05:34 · 323 阅读 · 0 评论 -
auto 与 decltype
auto 让编译器通过 初始值推算 变量的类型,所以 auto变量 必须有初始值。auto 可以一条语句中声明多个变量,但是 该语句中的多个变量初始值应该是 同一种类型。auto sz = 0, pi = 3.14;//错误auto一般会忽略 顶层const,而 底层 const 会保留下来。引用也会被忽略。因为当引用作为初始值时,真正参与 初始化的其实是引用原创 2015-11-16 20:49:10 · 248 阅读 · 0 评论 -
C ++中的NULL与nullptr的区别
NULL是定义的一个宏,值为0,属于预处理器的部分,预处理时会直接替换为0int *p = NULL; //正确int *p = 0; //正确int i= 0;int * p1 = i;//错误,不能将int变量转换为int*int n = NULL;//正确int n2 = nullptr;//错误,不能将指针类型赋值给int类型int *p2 = n原创 2015-11-16 15:45:38 · 563 阅读 · 0 评论 -
const修饰符(C++11标准)
const对象创建之后,就不能改变其值,所以在定义时必须对其初始化。如果利用一个对象对const对象进行初始化,则它们可以是不是const类型没有关系。int i = 1;const ci = i;//正确int j = ci;//正确当尝试改变ci的值时,ci的常量特性才发挥作用默认情况下,const对象仅在定义文件内有效,如果需要在其他文件中也需要使用,原创 2015-11-16 16:43:13 · 292 阅读 · 0 评论 -
排序算法(c++编写)
#include using namespace std;//选择排序,计算出每个元素的名次templatevoid rank1(T a[], int n, int r[]){ for(int i = 0; i r[i] = 0;//初始化 for(int i = 1;i for(int j = 0;转载 2015-11-12 16:29:42 · 331 阅读 · 0 评论 -
编写与类型无关的代码——primer读书笔记
通过将函数参数设定为const的引用,保证函数可以用于不能拷贝的类型,大多数类型,包括内置类型和一些标准库类型(除unique_shared和IO类型之外)都是允许拷贝的。在比较操作时我们只是用。如果我们编写代码时只使用.模板程序应该尽量减少对实参类型的要求。转载 2015-08-18 16:20:05 · 251 阅读 · 0 评论 -
非类型模板参数
一个非类型参数表示一个值而非一个类型。我们通过一个特定的类型而不是关键字class或typename来指定非类型参数。当一个模板被实例化时,非类型参数被一个用户提供的或编译器推断出的值所代替。这些值必须是常量表达式,从而允许编译器在编译时实例化模板。一个非类型参数可以是一个整型,或者是一个指向对象或函数的指针或(左值)引用。而绑定到非类型参数的实参则必须是一个常量表达式。绑定到指针或引用非转载 2015-08-18 16:02:43 · 542 阅读 · 0 评论 -
C++中左值与右值引用———C++Primer读书笔记
所谓右值引用就是必须绑定到右值的引用,通过&&获得。右值引用智能绑定到一个将要销毁的对象上,因此可以自由的移动其资源。左值引用,也就是“常规引用”,不能绑定到要转换的表达式、字面值常量或返回右值的表达式。而右值引用恰好相反。可以绑定到这类表达式,但不能绑定到一个左值上。返回左值的表达式包括返回左值引用的函数及赋值、下标、解引用和前置递增/递减运算符,返回右值的包括返回非引用类型的函转载 2015-08-14 10:57:05 · 361 阅读 · 0 评论 -
String(C++)
一、初始化string a;//被默认初始化为空字符串string b = a;//拷贝初始化,值与a一样string c = "hello";//c是"hello"字面值 除最后面的 空字符外的副本,string d(c);//等价于 string d = cstring e("hello");//等价于 string e = "hello"string f(n,'原创 2015-11-17 21:04:35 · 256 阅读 · 0 评论