![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++基础知识点
Deadlyevil
95后,GAME
展开
-
使用尾置返回类型(trailing return type)
C++11新标准中,尾置返回类型(trailing return type)跟在形参列表后面并以一个->符号开头。任何函数都可以使用尾置返回,但返回类型比较复杂的函数使用它最有效,例如返回类型是数组的指针或者数组的引用。示例:使用尾置返回类型(trailing return type)简化函数声明。声明一个返回数组指针的函数int (*func(int i))[10];//返回一个指向含有1...原创 2018-03-19 19:26:40 · 2616 阅读 · 0 评论 -
static和extern和全局变量和局部变量
全局变量(文件作用域变量)声明在函数体外的变量,全局变量的作用域,即具有文件作用域,如果要在其他文件使用,则要加上关键字extern声明后可以使用;存放在静态存储区中;生命周期为自动生存周期,即在作用域阶结束后内存将释放。局部变量声明定义在函数体内的变量。static+全局变量全局静态变量,改变了全局变量的作用域,使...原创 2018-04-01 19:42:56 · 383 阅读 · 0 评论 -
C++编译器不支持模板的分离编译
模板分离编译的话,编译器会报错,这种错误属于链接错误。模板函数不能直接编译成二进制文件,我们需要一个“实例化”的过程。只有调用这个模板,才能够实例化。而当实例化一个模板时,编译器必须看到模板的确切定义,不只是声明。所以解决办法有两种:(1)在模板定义的cpp中显式实例化,例如:template class CArray<int>;(2)将声明定义放在同一个文件中。...原创 2018-05-12 15:25:02 · 237 阅读 · 0 评论 -
常量规则以及建立在整个类中都恒定的常量
C++中用const常量完全取代宏常量。关于建立在整个类中都恒定的常量:const数据成员只在某个对象生存期内是常量,而对类而言是可变的-因为类可以创建多个对象-不同对象的const数据成员可以不同所以应该用枚举常量来实现class A{ enum{SIZE1 = 100, SIZE2 = 200}; //枚举常量 int arrayA[SIZE1]; i...原创 2018-05-12 19:36:34 · 257 阅读 · 0 评论 -
临时变量
“abc”不是string类型,不能作为实参传递给形参string &a,因为如果传递的话,构造时会产生一个临时对象,但左值引用不能绑定临时对象。如何修改:方法一:定义string obj = "abc";传递obj,方法二:形参改为const string&。总结:对象传递给reference-to-non-const形参时不会发生隐式转换。...原创 2018-05-07 09:04:13 · 535 阅读 · 0 评论 -
size_t用法和指针类型大小
size_t到底什么时候用呢?合理使用size_t可以提高程序的可移植性和代码的可读性。size_t在win32编译下是4字节,在x64编译下是8字节。同样的char*指针的占用空间也是如此。未完待续!...原创 2018-05-08 14:15:30 · 1216 阅读 · 0 评论 -
迭代器(iterator)
迭代器介绍类似于指针类型,迭代器也提供对对象的间接访问。使用迭代器1.有迭代器的类型同时拥有返回迭代器的成员,如名为begin和end的成员。//由编译器决定b和e的类型//b表示v的第一个元素,e表示v尾元素的下一个位置(one past the end)auto b = v.begin(), e = v.end();//b和e的类型相同end成员返回的迭代器常被称作尾后迭代器(off-th...原创 2018-02-20 20:54:36 · 205 阅读 · 0 评论 -
变量声明和定义的关系
C++语言支持分离式编译(separate compilation)机制,其允许将程序分割成若干个文件,每个文件可以被独立编译。为了支持分离式编译,C++语言将声明和定义区分开来。声明(declaration)使得名字为程序所知,一个文件如果想使用别处定义的名字就必须包含对那个名字的声明。定义(definition)负责创建与名字关联的实体。变量声明规定了变量的类型和名字,在这一点...原创 2018-02-02 00:04:34 · 366 阅读 · 0 评论 -
const限定符
const限定符1.const对象一定要初始化(手工给予初值),初始值可以是任意复杂的表达式;const int i = get_max(); //运行时初始化const int j = 4; //编译时初始化2.const对象初始化第二种方法,利用一个对象去初始化,则他们是不是const都无关要紧;int i = 2;const int ti原创 2018-02-04 11:12:14 · 239 阅读 · 0 评论 -
处理类型(Dealing with Types)
类型别名1.类型别名(type alias)是一个名字,是某种类型的同义词。由2种方法用于定义类型别名:(1)传统方法使用关键字typedef:typedef double wages; //wages是double的同义词typedef wages base, *p;//base是double的同义词,p是double*的同义词(2)C++11新标准规定了 一种新的方法,使用原创 2018-02-05 09:31:24 · 335 阅读 · 0 评论 -
C++11范围for(range for)语句
使用范围for语句处理string对象若想对string对象中的每个字符做操作,目前最好的方法是使用C++11新标准提供的一种语句:范围for(range for)语句。这种语句遍历给定序列中的每个元素并对序列中的每个值执行某种操作,其语法形式是:for(declaration : expression) statement 一个string对象表示一个序列,因此string对象可以作为范围for...原创 2018-02-05 14:35:23 · 3680 阅读 · 0 评论