C++学习-1

泛型的概念:自动推理类型

C++/C 类型检测严格

         1.赋值的时候是要求严格匹配,在初始化的时候是可以转换的.

         2.在对于初始化的时候,()是单值,{}这个是数组,字符串等等    

cin.get()

                  用法1: cin.get(字符变量名)可以用来接收字符

                  用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格

                  用法3:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足

重定向

                  可以把一个文件的输出,输出到指定文件,>代表刷新后重写,>>代表直接追加

                  <,<<都是输入              

模板:调用才编译

                          特例永远优先于模板             通用泛型

                          需要强行调用模板就要<>指定类型

                          嵌套肯定要说明类型,多层嵌套,需要最内层说明

                          一般推断不了的也要用类型说明

总结:要么能根据类型判断,要么就直接指明

命名空间可以无限嵌套

                  不能有private成员

                  内层覆盖外层

                  要是有外层时

                  ::直接访问全局变量

                  使用命名空间要先定义才能Using...

                  inline在命名空间的作用直接内联到命名控件成为默认的函数

Inline命名空间直接可以在本层访问

                  匿名命名空间等同于全局变量

                  标准的命名空间能别名,自定义的可以

多个命名空间要防止冲突

c++没有声明与定义的区别

类也可以放在命名空间里面

static作用于当前文件,

extern表名该变量已经声明,编译器从外部查找(声明的感觉)

Using命名虽然是全局但是还是没有extern强势

匿名结构等同于全局变量,可以跨文件,::屏蔽匿名

匿名空间更加凸显全局性(匿名命名空间)

typeid().name()是什么类型

<cstdarg>可变参数             

函数参数包可变参数总结:

                  1.必然是递归.

                  2.一定要有一个配套的递归函数(参数一定是除了typename T,typename...Args之外的那个

                  3.一定要设置递归结束 return0;

默认参数是CPP的特性.默认参数从右边开始,函数参数进栈从右开始

c中auto自动变量,栈上

括号仅用于初始化

  1. CPP不存在声明和定义之说(C语言存在):解决方式就是命名空间
  2. 匿名命名空间相当于全局
  3. Using命名空间之后,很容易和全局发生冲突,只要使用using就可以省略命名空间此时就容易发生冲突
  4. 局部变量直接覆盖命名空间
  5. 5.      ::最全局
  6. 6.      Typeid().name类型是什么

Typeid获取数据类型 是关键字而已

  1. 7.  默认参数都从右边开始,参数进栈的顺序都是从右往左
  2. 8.  For(auto i:a)取得是副本

要想取原本,旧的auto &

可以在模板中使用

  1. 9.  括号仅用于初始化

10. CPP数组new时必须指定大小

11. Typedef只能搞C有的

原文地址:https://www.cnblogs.com/tony-xu999/p/8573938.html