随笔分类 -  C++

摘要:函数中的数组 1. p是一个数组,是一个局部变量,说明这个函数执行完毕之后p数组中的值都被销毁了 如果单独使用p,则p表示这块数组的首地址。函数返回值按值传递是p,仅仅传递p的地址,而p数组中的内容都被销毁了。 2. 常量区的字符不能修改。 3. 正确,helloworld存在于常量区。不会随着函数 阅读全文
posted @ 2018-06-07 11:19 immjc 阅读(1773) 评论(0) 推荐(0)
摘要:转换构造函数 定义 作用:将指定类型的数据转换为类的对象。 1. 参数仅包含一个非本类const引用类型的参数 2. 参数可以进行隐式转换如int->float 可以通过explicit来禁止隐式转换。 举例: 类型转换函数 定义 作用:将一个类对象转换成另一个类型的数据 1. 该函数必须为成员函数 阅读全文
posted @ 2018-05-08 16:20 immjc 阅读(421) 评论(0) 推荐(0)
摘要:关于对结构体求sizeof。需要考虑一下几点: 1、内存对齐 2、机器的位数(32 or 64) 3、是否含有虚函数 4、继承关系 5、static不归入sizeof 6、普通成员函数与sizeof无关 以32位系统为例 Exp 1 空类:占用1个字节。 Exp 2 虚函数:占用4个字节 Exp 3 阅读全文
posted @ 2018-03-07 22:05 immjc 阅读(968) 评论(0) 推荐(0)
摘要:友元 类可以允许其他类或函数访问它的非共有成员,办法是令其他类或函数成为它的友元。如果类想把一个函数作为它的友元,只需要添加一条以friend关键字开始的函数声明语句即可。 友元声明只能出现在类定义的内部,但是在类内出现的具体位置不限,友元不是类的成员也不受它所在区域访问控制级别的约束。 一般来说最 阅读全文
posted @ 2018-01-28 13:37 immjc 阅读(129) 评论(0) 推荐(0)
摘要:构造函数 每个类都分别定义了它的对象被初始化的方式,类通过一个或几个特殊的成员函数来控制其对象的初始化过程,这些函数叫做构造函数。 构造函数的任务是初始化类对象的数据成员,无论何时只要类的对象被创建,就会执行构造函数。 构造函数的名字和类名相同。和其他函数不一样的是,构造函数没有返回类型;除此之外类 阅读全文
posted @ 2018-01-27 14:50 immjc 阅读(179) 评论(0) 推荐(0)
摘要:this指针 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。 this指针的作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员函数的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。 举个栗子 插一句:定义在类内部的函数是隐式的inline函 阅读全文
posted @ 2018-01-07 14:12 immjc 阅读(179) 评论(0) 推荐(0)
摘要:函数指针 函数指针指向的是函数而非对象,和其他指针一样,函数指针指向某种特定类型。 函数的类型由它的返回值类型和形参类型共同决定,与函数名无关。 pf指向一个函数,该函数的参数是两个const string的引用,返回值是bool类型,*pf两边的括号必不可少 使用函数指针 当我们把函数名作为一个值 阅读全文
posted @ 2018-01-04 14:29 immjc 阅读(308) 评论(0) 推荐(0)
摘要:函数重载 如果同一作用域内的几个函数名字相同但形参列表不同,我们称之为重载函数。 main函数不能重载 对于重载函数来说,它们应该在形参数量或形参类型上有所不同。 不允许两个函数除了返回类型外其他所有的要素都相同。 有时候两个形参列表看起来不一样,实际上是相同的 形参名只是起到了帮助记忆的作用。有没 阅读全文
posted @ 2017-12-23 16:02 immjc 阅读(310) 评论(0) 推荐(0)
摘要:main函数是演示c++程序如何向函数传递数组的好例子。 有时我们需要给main传递实参,这时候定义main函数 输出如下: 因为没有在控制台下输入实参,所以argc中只含有1个字符串,也就是exe的路径 在控制台下首先进入exe的路径然后输入实参,结果如下 阅读全文
posted @ 2017-12-22 11:53 immjc 阅读(1649) 评论(0) 推荐(0)
摘要:编写一个函数,令其交换两个int指针。 交换两个值可以使用两种形式,一种是使用引用传递实参进行交换,另一种是使用指针以值传递的方式进行交换。 题目要求交换两个int指针,也可以参考交换值的两种形式。 1、使用指向指针的指针进行交换。 2、使用引用来传递指针进行交换、 测试代码如下: 测试结果如下: 阅读全文
posted @ 2017-12-21 16:55 immjc 阅读(1967) 评论(0) 推荐(0)
摘要:函数基础 一个典型的函数定义包括以下部分:返回类型、函数名字、由0个或多个形参组成的列表以及函数体。其中形参以逗号隔开,形参列表位于一个圆括号之内,函数指向的操作在语句块内,也就是函数体。 函数调用 使用调用运算符来执行函数,调用运算符的形式是一对圆括号,它作用于一个表达式,该表达式是函数或者指向函 阅读全文
posted @ 2017-12-20 22:09 immjc 阅读(324) 评论(0) 推荐(0)
摘要:类型转换 在C++语言中,某些类型之间有关联,如果两种类型有关联,那么当程序需要其中一种类型的运算对象时,可以用另一种关联类型的对象或值来替代。换句话说,如果两种类型可以相互转换,那么它们就是关联的。 例如 何时发生隐式转换 1、在大多数表达式中,比int类型小的整型值首先提升为较大的整数类型 2、 阅读全文
posted @ 2017-12-15 17:43 immjc 阅读(240) 评论(0) 推荐(0)
摘要:点运算符和箭头运算符都可以用于访问成员,其中,点运算符获取类对象的一个成员;箭头运算符与点运算符有关 ptr->mem 等价于 (*ptr).men 因为解引用运算符的优先级低于点运算符,所以执行解引用运算的子表达式两端必须加上括号。如果没有括号,代码的含义就大不相同了 箭头运算符作用于一个指针类型 阅读全文
posted @ 2017-12-15 14:35 immjc 阅读(1569) 评论(0) 推荐(0)
摘要:主要分析除法运算符和求余运算符。 除法运算符/主要用于对两个整数进行求商。并且商一律向0取整(即直接切除小数部分) 求余运算符就比较复杂了 如果m和n是整数且n非0,则表达式(m / n)* n + m % n 的求值结果与m相等 如果m%n不等于0,则它的符号与m相同。 除了-m导致溢出的特殊情况 阅读全文
posted @ 2017-12-14 20:46 immjc 阅读(10177) 评论(0) 推荐(0)
摘要:数组 数组是存放类型相同的对象的容器。这些对象本身没有名字,需要通过其所在位置访问。数组的大小确定不变,不能随意向数组中添加元素。 数组是一种复合类型,声明型如a[d],a为数组名,b为数组维度(说明数组中元素的个数)。 数组初始化 默认情况下,数组的元素被默认初始化。在函数内部定义了某种内置类型的 阅读全文
posted @ 2017-12-13 22:02 immjc 阅读(645) 评论(0) 推荐(0)
摘要:面向过程中的static static修饰局部变量 static修饰局部变量时,使得被修饰的变量成为静态变量,存储在静态数据区。数据生命周期与程序相同。在main函数之前初始化,在程序退出时销毁。 局部静态变量使得该变量在退出函数后,不会被销毁,因此再次调用该函数时,该变量的值与上次退出时值相同。需 阅读全文
posted @ 2017-12-12 20:12 immjc 阅读(299) 评论(0) 推荐(0)
摘要:标准库类型string表示可变长的字符序列 定义和初始化string对象 不使用等号为直接初始化,使用等号 为拷贝初始化 string对象对大小写敏感。 读取string cin >> s; string对象会忽略空白,从第一个真正的字符开始读起,直到遇到下一个空白为止。 读取位置数量的string 阅读全文
posted @ 2017-12-12 16:00 immjc 阅读(185) 评论(0) 推荐(0)
摘要:类型别名 类型别名是一个名字,它是某种类型的同义词。 定义类型别名可以使用关键字typedef 定义类型别名也可以使用别名声明 指针、常量和类型别名 声明语句中用到pstring时,其基本数据类型是指针,此时const pstring表示常量指针。 auto类型说明符 用它就能让编译器替我们取分析表 阅读全文
posted @ 2017-12-11 14:43 immjc 阅读(291) 评论(0) 推荐(0)
摘要:复合类型 复合类型是指基于其他类型定义的类型:如引用和指针等 一条声明语句由一个基本数据类型和紧随其后的一个声明符列表组成。 引用 引用为对象起了另外一个名字,引用类型引用另外一种类型,通过将声明符写成&d的形式来定义引用类型,其中d是声明的变量名 引用必须被初始化:一般在初始化变量时,初始值会被拷 阅读全文
posted @ 2017-12-10 17:53 immjc 阅读(682) 评论(0) 推荐(0)
摘要:变量 变量定义的基本形式:首先是类型说明符,随后紧跟着一个或多个变量名组成的列表,其中变量名以逗号分隔,最后以分号结束。 对象(变量)是具有某种数据类型的内存空间。 列表中每个变量名的类型都由类型说明符指定,定义时还可以为一个或多个变量赋初值。 在同一条定义语句中,可以用先定义的变量值去初始化后定义 阅读全文
posted @ 2017-12-10 12:19 immjc 阅读(188) 评论(0) 推荐(0)