C++一些入门知识

C++一些入门知识
一、 名字空间(定义作用域)

  1. 解决函数、全局变量名重复的问题,在两个名字里的重复函数实际是两个完全无关的函数。
  2. 名字空间可以嵌套,内外部没有关系。
  3. 名字空间允许重名,会被合并。
  4. 使用using关键字,引用一个名字空间,时期中所有内容对自己可见。
  5. 两个名字空间有名字相同的函数,同时用using引用两个不会报错,除非使用了这些函数,因为会产生歧义。

二、 函数重载
允许在 同一作用域声明不同的同名函数,形参不能完全相同,返回值不同参数列表也不能相同
缺省参数:参数列表中允许存在被赋值的参数,具备特点:
1.如果传入,取传入的值,没传取定义时被赋的值
2.这些参数必须位于参数列表尾部,不能穿插
3.被赋值的函数列表不能在声明和定义的函数中同时出现,只能出现一次

三、 名字修饰:C语言只是在函数名前加下划线,函数名相同就会起冲突。
C++中,是 ?函数名@域名1@域名2…@@参数列表@Z ,包含:a,函数名 b,所在域, c,参数列表 c++中三个都一样才冲突

四、 Extern “c”或extern “c”{} 用c语法编辑

五、 引用:给变量取别名,代替指针完成跨栈操作,具备执政跨栈一切特点。其底层的实现是指针。
特点:在定义时必须初始化, 一个变量可以有多个引用, 一个引用只能引用一个变量。
引用比指针相对更安全(不会随便改变指向)

六、 内联函数:调用时不创建新栈,直接在调用处展开,关键字为inline。是对编译器的建议,如果函数过于复杂,还是处理成普通函数,是一种空间换时间的做法。

七、 auto:Auto不能做函数的的参数和返回值,不能参与数组的类型
Auto是一个类型修饰符,根据变量初始化的值的类型决定自己是什么类型。
Auto可以连续定义变量,类型由第一个决定,后续不能违背这个类型,但是可以定义相应类型的指针和引用
Auto必须初始化,否则不知道是什么类型
C++11后,auto会失去本来的含义。

八:结构体在C和C++不同:
C++中:
结构体定义变量不需要+struct
可以定义空结构体,大小为1
可以在结构体中声明甚至实现函数,C中只能放指针
成员函数直接可以访问本结构体成员变量而无需传入;C中函数和结构无直接关联。
成员函数不影响结构体大小,因为成员函数是放在公共区域的,只是在这个结构体域而已

九、 类:类是一类特殊的结构体,加入public:,把struct改成class就成了一个简单的类。

十: 访问限定符:
Public:正常访问
Private:只在类内部访问
Protected:目前与private没有区别
Tip1:访问限定符只在编译阶段生效,编译好后,在运行阶段没有限定;
Tip2:结构体也能使用访问限制符,只是一般不用,除了为了兼容c结构体;
Tip3:结构体中默认是public,类中是private。

十一、 This指针:一般成员函数中都有this指针,这个指针指向调用这个成员函数的对象
成员函数中,this指针中的成员不需要使用this指针访问,直接访问即可。(使用也没错)
This的类型是当前类类型的指针,

十二、 狭义初始化:在定义变量时直接进行初始化 int a = 3
广义初始化:第一次给变量赋值就叫做初始化的情况 int a; a=3;
初始化列表相当于狭义初始化,构造函数内部相当于广义初始化
所以初始化列表可以解决一些只能用下一初始化进行初始 化的变量,例如const变量,引用,没有无参构造的类的对象

十三、 Explicit:阻止单参构造的不规范调用单参数的构造函数,可以用=直接调用例如:假设ct类中有一个单参数的构造函数,参数类型为int或int相关类型,那么,”CT a = 3;”,看上去好像直接把3赋值给了a,为了避免这种写法,可以在构造函数加explicit,使得这样的写法变得无效。

十四、 运算符重载:将运算符看成函数,把他的几目当成参数,通过参数的类型识别出对应的操作方法,相当于函数重载。运算符重载有在指定的规则,规则根据运算符来制定。
类会自动提供一个赋值运算符的重载,执行的是浅拷贝,跟拷贝构造相同。

十五、 Const成员函数:const加在成员函数的末尾,代表这个函数中的this是const修饰的
类会自动提供两个取地址符重载,一个针对普通对象,一个针对const对象

十六、 静态成员:跟类走不跟对象走,类在他在,一般成员对象在他才在。所以静态成员可以通过类名直接调用,而普通成员必须通过对象调用。
静态成员变量:所有对象共享,无论谁改了,,所有的一起改
储存在全局区,不占类的空间,所以取sizeof时不算在内
赋初值只在类外,赋值时不加static。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值