学习C++ Primer 的个人理解(六)

第四章和第五章没什么特别的。基本上就是书本上的字面意思,也没什么需要注意的细节。直接记录第六章。

本章介绍了函数,其实也没什么特别的。但有几个重点

   1.形参的类型决定了形参和实参的交互方式。形参是引用,则它将绑定到实参上。

   2.实参的值拷贝给形参时,形参和实参是两个相互独立的对象。

      当初始化一个非引用类型变量时,初始值被拷贝给变量。此时对变量的改动不会影响初始值。

   3.对于指针形参,函数接收一个指针,实际上跟非引用类似,拷贝的是指针的值,两个指针是不同的指针

      C++中,建议用引用类型的形参代替指针

   4.当对象很大,拷贝往往比较低效,使用引用会更好。如果函数无须改变引用的值,则声明为常量引用。

   

   5.const形参和实参

    当实参初始化形参时会忽略顶层const。也就是说形参的顶层const被忽略了。当形参有顶层const时,给他传变量和常量都是可以的。

   6.形参的初始化方式和变量其实是一样的。

      我们可以使用非常量初始化一个底层const对象,反过来则不行。

   7.不要返回局部对象的引用或指针!

   8.返回数组指针 如:

      int (*func(int i))[10];

     尾置返回类型:

      auto func(int i) -> int(*) [10]

    9.constexpr函数 是指能用于常量表达式的函数。

      与普通函数定义方式不同的地方在于:

        返回类型和形参都得是字面值类型。

   10.函数指针

      函数的类型由返回类型和形参类型共同决定。如:

      bool lengthCompare (const string &, const string &)

      该函数类型是:

      bool (const string&, const string&)

时间: 2024-10-10 21:44:59

学习C++ Primer 的个人理解(六)的相关文章

学习C++ Primer 的个人理解(九)

这一章介绍顺序容器,在之前的第三章中,了解到的vector就属于顺序容器的一种. 一个容器就是一些特定类型对象的集合. 除了vector,还有哪些顺序容器? vector: 大小可变,随机访问的速度很快,但是在尾部之外的部分插入或删除元素可能会很慢. deque : 随机访问的速度很快,在头和尾插入或删除的速度都很快. list: 双向链表,只支持双向顺序访问,在任何位置插入或删除操作都很快(链表的特性) forward_list: 单向链表,只支持单向的随机访问.在任何位置插入或删除都很快 a

学习C++ Primer 的个人理解(二)

到了第二章,其实才算是真正的开始.也就是本书的第一部分C++基础. 第一章可以说就是第一部分的一个简单的梗概. 从第二章开始,对C++的学习步入正轨,从最基础的开始学起,也就是 变量. 而说到变量就不得不说类型. 第二章讨论的主要就是如下几点: 1.什么是基本类型,什么是复合类型? 2.什么是变量,什么是常量? 3.什么是类型别名 4.定义数据结构(struct) 我认为本章讨论常量的部分,对后面的学习影响很大,如果没有理解清楚const的复合类型的一些细节问题,会对后面函数和类的部分的学习造成

学习C++ Primer 的个人理解(三)

第三章,主要内容是字符串和数组.感觉作者的意图是希望读者可以早一点可以写出简单的小程序,并且可以早点接触迭代器这种思想. 在我看来,这种内容的难度并不大. 对于编程来说,最重要的应该是思想,类似vector的各种操作,读者仅仅只需要知道vector可以做这些操作,真正用到的时候,能够想起来,再去查就好了. 在看<UNIX环境高级编程>的时候,各种系统调用,不可能每一个都记得熟,所以我认为这种只需要知道“可以这么做“就行了,用到的时候再查,久而久之自然就熟悉了. 然而关键的是为什么,比如为什么要

学习C++ Primer 的个人理解(一)

<C++ Primer>这本书可以说是公认的学习C++最好的书,但我觉得不是特别适合作为教材,书中内容的顺序让人有些蛋疼.我个人认为初学此书是不能跳着看的.如果急于上手的话,我更推荐<C++程序设计>. 首先是第一章,第一章可以说是本书第一部分的一个简略的概括.对于有其他编程语言经验的读者来说,看完这章基本可以看出C++的基本语法与其他语言的差异.对于零基础的读者,可以跟着书中内容写一些小程序了. 本主要介绍了以下几点: 1.一个最简单的C++程序是什么样的. 2.初步了解输入流和

学习C++ Primer 的个人理解(十)

标准库没有给每个容器都定义成员函数来实现 查找,替换等操作.而是定义了一组泛型算法,他们可以用于不同类型的元素或多种容器类型. 迭代器令算法不依赖与容器 算法永远不会执行容器的操作 算法本身不会执行容器的操作,他只会运行于迭代器之上. 算法永远不会改变底层容器的大小,有可能改变元素的值,也可能在容器内移动元素,但永远不会直接添加或删除元素. 只读算法 类似find就是这样一种算法,只会读取其输入范围内的元素,永远不会改变元素. accumulate也是只读算法. int sum = accumu

学习C++ Primer 的个人理解(七)

类,后面还有两章是介绍有关于类的内容的.这一张依然只是个概括.但也已经将大致用法介绍完了. 重点如下: 1.成员函数的声明,必须在类的内部. 2.引用const成员函数 我们知道成员函数中有一个名为this的隐式参数,相当于调用它的那个对象. 默认情况下,this是顶层const的.也就意味着,我们不能把this绑定到一个常量对象上. 还记得第二章关于const的细节问题么? this是顶层const的,意味着this本身不能被改变. 而如果对象是一个常量对象,那我就不能把this绑定到对象上.

学习C++ Primer 的个人理解(十一)

关联容器 就像是个字典, 其元素是 键 - 值 对. 关键字起到索引作用. 有序: map:关联数组:保存 健-值 对 set : 关键字既是值. multimap : 关键字可重复出现的map multiset   : 关键字可重复出现的set 无序: unordered_ 前四个 使用map map<sring ,size_t> word_count; 使用set set<string> exclude pair类型 一个pair类型保存两个数据成员. 创建一个pair时,我们

学习C++ Primer 的个人理解(十二)

动态内存与智能指针 在C++中, 动态内存用 new来分配空间并返回一个指向该对象的指针 用delete来销毁. 由于手动的对动态内存进行操作容易出现问题.所以新的标准库提供了两种智能指针. 智能指针的行为类似于常规指针.区别在于他负责自动释放所指对象. shared_ptr : 允许多个指针指向同一个对象. unique_ptr :独占所指向的对象 weak_ptr   :是一种弱引用,指向shared_ptr 所管理的对象 shared_ptr 类 类似vector ,shared_ptr

Swift学习——Swift基础详解(六)

Optionals    选配 选配(好像不是这么翻译的)适用于那些值可能为空的情况,一个选配有两种情况:存在值并且等于x,或者值不存在. 选配的概念在OC和C里面并没有,在OC中最接近的概念就是:OC中的返回值为对象的函数,当对象不存在的时候,可以返回nil,但是nil只能代表对象,不可以代表基础类型或者结构体和枚举类型.OC中使用NSNotFound表示值不存在.在Swift中,不需要使用其他的类型表示不存在的值. 举个例子: 在Swift中,String类型有一个方法叫做toInt,但是并