c\c++笔记之二

part 2
函数中形参是const类型的话,在实参初始化形参的时候会忽略const修饰,换句话说,形参的顶层const被忽略掉;所以 function(const int a)与function(int a)不能认为
是重载函数了。
可以用非常量的变量给顶层const赋值,反之却不能,给给函数传值也一样。
常量引用只能绑定到对象不能绑定到字面值常量;const限定符可以直接绑定到字面值常量:const int &i=11是允许的。常量指针绑定的是对象,const限定符只是限定其绑定的
对象不能发生改变,允许通过改变指针的值来改变对象的值。
数组的两个特性:1.不允许拷贝;2.使用数组时会将其转换成指针。begin()和end()函数可以查找数组首元素和尾元素的地址。

注意:int(*a)[10]为指向10个整数的数组的指针;int *a[10]为10个指向整数指针组成的数组;
      int arr[10] //含有10个整数的数组;
      int *prt[10]//含有10个指向整数指针的数组;
      int (*prt)[10]=&arr//指向一个10整数数组的指针。所以要声明一个返回数组指针的函数类似,形如:type (function(parameter list)) [dimension];

构造函数没有返回值,名字与类名字一样,支持重载;构造函数不能被声明成为const;另外,就算我们的创建的的是const对象,直到构造函数完成初始化之后,对象才真正取得它
的常量属性;含有内置类型或者复合类型的成员应该在类的内部初始化,这种情况下,只有内置类型和复合类型成员都赋值才可以顺利执行合成默认构造函数。
在c++11中struct和class关键字作用是一样的,不同的是class默认的访问权限是private,而struct是public;
非类内函数访问类的非公有成员,只需要在类内声明该函数为友元函数,加关键字friend;
类内初始值必须使用=的初始化形式或者花括号括起来的直接初始化形式。
对于一个不需要改变变量的操作,我们应该用const来修饰。类中允许通过const来重载函数,并且通过对象时候是const来决定调用函数。
note:
一个类的名字就是一个类类型,只有名字相同才是类型相同;不允许不同类型的类类型相互复制;
string s;
s=string(10,'c');//表示将10个c赋值给s;
关于static关键词:
static修饰局部变量时该变量是存放在静态存储区,生命周期是整个程序结束。static局部变量初次定义时就要初始化,且只能初始化一次。如果在定义的时候不初始化,
编译器就会自动赋值为0;(也就是说如果重复调用同一个函数,在第二次调用时,就不会再执行static局部变量初始化那句话 了)
当static修饰全局变量或者函数时,不是为了限制其存储方式,而主要是为了限制该全局变量或者函数的作用域仅限于本文件,所以又称为内部函数。此件时, 对于外部
(全局)变量, 不论是否有static限制, 它的存储区域都是在静态存储区, 生存期都是全局的. 此时的static只是起作用域限制作用, 限定作用域在本模块(文)内部.
使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名。

猜你喜欢

转载自blog.csdn.net/weixin_41854971/article/details/80190784