- 博客(35)
- 收藏
- 关注
原创 C++类别之Static成员
由於 get_count() 為 static 成員函數,因此可以直接用類別名稱呼叫。count 用來計算 Demo 物件建立的次數,這必須在類別定義外先初始化。類別中宣告為 static 的成員屬於類別,獨立於物件而存在,舉例如下。存取宣告為 static 的資料成員得用 static 的成員函數。count 為 static 的資料成員。
2024-08-06 18:06:44
182
原创 C++类别friend成员
private成员只限同个类别的其他成员存取, C++ 提供另一种方式让函数或其他类别也可存取private成员,就是在类别宣告为friend的成员函数,或是宣告为friend的类别,举例如下。do_something()为宣告为friend的成员函数,注意,这里以Demo的参考当参数,至于Demo2为可存取Demo中private成员的类别。的参考当参数,就可以存取。
2024-07-30 15:36:19
260
原创 C++类别 ( 存取函数与修改函数 )
像这样取得private或protected资料成员的函数叫做存取函数(accessor) ,也是一般俗称的getter,而设定private或protected资料成员的函数叫做修改函数(mutator) ,也是一般俗称的setter,举例如下。当资料成员被宣告为private或protected的时候,他们就只能透过类别中的成员函数存取,如果要让类别以外的地方设定或使用private或protected的资料成员,就得透过public的成员函数。建构函数中改成用修改函数设定a与b。
2024-07-28 18:56:21
187
原创 C++类别(private / protected成员)
存取标签private的成员只限类别中可以使用,例如Demo中宣告了两个private资料成员另外在public的建构函数与do_something()使用其值编译执行,结果如下。
2024-07-27 15:39:47
225
原创 C++类别(建构函数、初值串列、EXPLICIT指示词)
public成员可以由所有使用物件的地方自由呼叫,private成员则限制在类别中呼叫,也就是类别的成员才可以使用private成员,protected成员的使用范围与private成员相同,但是private成员不能被继承(inheritance ) ,protected成员则可以被继承。利用关键字(keyword) class宣告类别名称,其后的大括弧为类别的宣告内容,里头用存取标签(access label) 区分成员(member) 的权限。新版本的建构函数有两个参数,分别用来设定两个资料成员。
2024-07-25 16:16:50
394
原创 C++函数( Lambda、inline 、多载、指标)第二部
Lambda 函数是C++11 新增的函数形式,这是种匿名函数,也就是不需要函数识别字,简单举例如下Lambda 函数用中括弧与小括弧组成,此例的lambda 函数为简化的形式,中括弧可放置作用域中的变数,而小括弧则放置lambda 函数的参数因此接下来就是透过变数f使用这个匿名的lambda 函数编译执行,结果如下。
2024-07-22 16:03:03
250
原创 C++函数(函数原型,指标、参考、预设、可变参数)第一部
自订函数的定义需要放在main()或呼叫之前,如果放在main()或呼叫之后,例如这样无法通过编译因为C++ 预设任何识别字使用前都得先定义或宣告,如果我们要把自订函数的定义放在main()或呼叫之后,就要先宣告函数原型(function prototype) ,因此上例要改写如下函数原型的宣告在第3 行参数列方面宣告参数的型态即可,编译执行结果如下通常函数原型的宣告会放在标头档(header file) 之中,函数实作则会放在其他程式档案。
2024-07-15 17:07:49
672
原创 C++之复合资料型态 第一部(参考 列举 指标)
复合资料型态(compound type) 是由其他资料型态(data type) 定义出来的型态, C++ 中的复合资料型态包括参考(reference) 、列举(enumeration) 、阵列(array) 、指标(pointer ) 、结构(structure) 及联合(union)。
2024-07-13 16:41:01
1314
原创 C++catch (...)陈述
例外处理可以有多个catch,如果catch后的小括弧里面放...,就表示不限型态种类的任何例外。这里抛出两种例外,第一种为int型态(type) ,第二种则是double型态。的部份写了两组,第一组为处理。之前,发生例外就会直接执行。放在最后有以上皆非的意义。型态的例外,第二组则是。
2024-07-12 15:31:18
228
原创 C++ 例外处理 try throw catch
程式中可能会发生的错误有三种,分别是语法错误(syntax error) 、执行期间错误(runtime error) 及语意错误(semantic error) ,其中编译器会直接检查出语法错误,如果含有语法错误的程式无法过编译,例如u06.cpp档案中漏打一个分号,编译器挑出错误并印出相关资讯。语意错误比较麻烦,若一个程式中有语意错误,这个程式可以顺利通过编译,却会跑出非预期的结果。
2024-07-11 21:40:08
411
原创 C++之goto陈述
关键字 goto用于控制程式执行的顺序,使程式直接跳到指定标签(lable) 的地方继续执行。此例按标签的顺序,在每个标签下方都用大括弧围住一个程式区块,概念满简单的,上面利用标签顺序执行,下面我们另举一个例子,使。标签可以是任意的识别字,后面接一个冒号。到了指定标签,就会执行标签下方的程式区块。编译后执行,结果如下。编译后执行,结果如下。
2024-07-09 22:58:41
203
原创 C++之do-while陈述
似while陈述,do-while下方while后的小括号为结束条件测试,小括号后需接分号,另外有关控制变数的初始设定及调整,这都需要放在其它地方。关键字(keyword) do与while构成C++ 中回圈的一种,常用于后测式的回圈,意思是回圈会先进行第一轮,然后才进行回圈的结束条件测试,形式如下。回圈也可以是巢状的,所谓巢状的回圈是指回圈中包含其他的回圈,由于我们利用程式码缩排的方式,使该段程式码凹陷进去,看似巢的样子,故称巢状。回圈是用来进行进行重复性的工作,典型的回圈会进行下列三项基本任务。
2024-07-06 15:19:09
388
原创 while陈述
关键字 while构成C++ 中回圈的一种,常用于没有确定重复次数的回圈,同时while后面接着小括弧为回圈结束的条件测试,通常为运算式,就是在回圈开始前,先进行回圈结束条件的测试,形式如下。回圈也可以是巢状的,所谓巢状的回圈是指回圈中包含其他的回圈,由于我们利用程式码缩排的方式,使该段程式码凹陷进去,看似巢的样子,故称巢状。下例程式印出九九乘法表,就是利用两个while回圈,一个while回圈之中包含另一个while回圈。回圈是用来进行进行重复性的工作,典型的回圈会进行下列三项基本任务。
2024-07-03 14:41:37
143
原创 【无标题】
回圈也可以是巢状的,所谓巢状的回圈是指回圈中包含其他的回圈,由于我们利用程式码缩排的方式,使该段程式码凹陷进去,看似巢的样子,故称巢状。关键字 for构成C++ 中回圈的一种,常用于有确定重复次数的回圈,同时for后面接着小括弧即囊括三项基本任务,形式如下。回圈增加一种新的写法,可以直接利用暂存变数走访内含多笔资料的物件(object) ,举例如下。下例计算1到100所有整数的和,示范for回圈的简单使用。for的小括弧有暂存资料的变数i,其后接冒号,冒号后则是要走访的物件,此例为整数阵列。
2024-07-02 21:00:34
176
原创 C++switch陈述
关键字break是用来暂时中断程式的执行,放在回圈内遇到break就会跳出回圈,而在switch里头的位标后面则是可以不让程式继续往下检查其他的位标,因为检查到相符的位标,程式即可暂停,若是没有用break,程式会持续执行到右大括弧},也就是switch陈述结束的地方,这样容易增加额外的程式执行时间。简单来说,switch后头接一小括弧,小括弧内为一常数运算式,计算出常数值若与其后case的位标(label) 相符,就会执行该case的陈述。data[i]会取得该阵列的第i个元素值,此为常数运算式。
2024-06-13 20:51:31
294
原创 c++控制结构if陈述
陈述后作为分流的程式码,通常编译器只接受一行,因此为避免程式执行的歧异,或非预期的错误,养成使用大括弧会是好习惯。, 也就是条件为真,其后用大括弧围起来的程式区块(block) 便会执行,而若运算式的结果为。C++ 最简单的选择结构(selection structure) 为单一个。,这样一来条件就为假,程式会跳过大括弧,寻找右大括号} 后的第一个陈述执行。陈述后头大括弧的陈述便会执行。后接一个小括弧,该小括弧内的。的位元编码,所以条件为真,分开处理,编译执行结果如下。编译后执行,结果如下。
2024-06-10 15:44:23
364
原创 C++ : static, extern前缀意义
这是因为如果include 某个档案后,里面所有的东西对于include 的人就通通都看得到了,也因此如果直接include a.cpp 和b.cpp,对于main.cpp 来说,他就看到有两个地方都宣告了debug 这个变数,所以compile 的时候直接就会被检查到而失败。因此,如果我们把a.cpp 和b.cpp 中的debug 在宣告时前面都加上static,这样compiler 在处理前期替换掉的名字就会不同,因此link 的过程中也不会有名字冲突的问题。,但每个单独的定义其实也都很好了解。
2024-06-09 14:46:54
651
原创 C++指派运算
C++ 最基本的指派运算子(assignment operator) 为单一个等号=,这是用来将等号右边的值拷贝给给左边的变数资料。等号也可以跟其他运算子合用,会直接将结果储存到原变数之中,如。可合用指派运算子的有算术运算子及位元运算子,以下程式示范算术运算子的部份。变数a加上变数b的值后,结果存进a之中,其值为7。变数a减掉变数b的值后,结果变数a的值为4。以下程式示范位元运算子的部份。编译后执行,结果如下。编译后执行,结果如下。
2024-06-01 15:25:59
186
原创 C++ sizeof运算
C++ 的关键字 sizeof为运算子,用途作为计算物件或资料型态所占的位元组数(byte) ,有三种用法,下面是第一种。
2024-05-29 15:46:21
183
原创 C++ 指标*跟&的用法
若将变数宣告为指标变数, 则操作都变成记忆体操作。当使用&当成函式引数前缀, 修改的值会传递回外部。以下针对2-4的程式的写法。
2024-05-27 14:44:50
254
原创 C++递增、递减运算
运算子(unary operator) ,也就是说只需要一个运算元即构成运算子,但在运算元有前后的差别!同样的,递减的前、后之别与递增雷同,前递减会在运算式之前递减,后递减则是在运算式完成后才递减。字元型态也可以做递增及递减运算,例如我们可依此特性印出26 个英文小写字母。后递增则相反,运算式完成后才会做递增的动作,例如。以下为浮点数型态做递增运算的例子。以下是整数型态做递增运算的例子。编译后执行,结果如下。编译后执行,结果如下。编译后执行,结果如下。编译后执行,结果如下。编译后执行,结果如下。
2024-05-25 15:39:44
578
原创 C语言-Vector与Iterator是什么?
同时若元素为物件时也会逐一执行deconstructor(),并且让size()归零,然而该记忆体还是存在的,并不会因此被回收掉。先resize()后会先填0进去,用reserve()再push_back()元素进去会更好,且超过resize大小超过capacity时,记忆体会先双倍配置,若用不到那么多记忆体的话会过度浪费。,因此若重新分配太多次后,会导致记忆体过度浪费与过多不必要的记忆体重新配置,因此若能知道要用多少的记忆体,或最多会用多少时,还是建议直接先使用reserve(n)进行记忆体配置。
2024-05-19 14:37:35
1734
1
原创 C语言— 回圈 / 递回
对于求某问题在输入S 的解P(S) 时,我们先将S 分割成两个子集合S 1与S 2,分别求其解P(S 1 ) 与P(S 2 ),然后再将其合并得到最后的解P(S)。因为他跟人类的思考模式不同,电脑的两种思维模式:穷举与递回(enumeration and recursion),穷举是我们熟悉的而递回是陌生的,而递回为何重要呢?因为他是思考好的演算法的起点,例如分治与动态规划。再来看个有趣的问题:假设我们有一个程式比赛的排名清单,有些选手是女生有些是男生,我们想要计算有多少对女男的配对是男生排在女生前面的。
2024-05-17 15:21:34
1560
原创 C语言字串扫描与格式化操作方式
针对标准输入扫描方案,如果来源是字串,可以用scanf。是针对标准输出的格式化方案,如果想格式化字串,可以使用。的容量,若超过的话会有缓冲区溢位的问题,你可以使用。的问题在于,格式化写入的字串长度,不能超过。时,第一个参数若指定。
2024-05-15 16:31:30
339
原创 C语言字串转换、字元测试
第二个参数在函式执行过后,会用来储存字串中第一个无法剖析为数字的字元位址,如果设定为。函式若没有可转换的字串,会传回0。,这几个函式若没有可转换的字元则传回0,若是转换结果超出了传回型态的范围,传回值没有定义,也就是难以检查错误。等函式会搜寻字串中可以转换的部份,直到遇到无法转换的字元,字串开头可以使用正负号,例如。,并传回各自传回型态的最大可容许数值(最大值或最小值),因此,可藉由检查。若是转换结果超出了传回型态的范围,会将定义在errno.h 的。若要将字串转换为数字,则可以使用。
2024-05-13 14:23:18
179
原创 C语言字串长度、复制、串接
你会发现,输入字串Justin 的话,会显示长度为7,这是因为包括了换行字元。是C99 制定,只能用于修饰指标的关键字,之后会谈到,就这边来说,表示你得保证。的话,要注意它会包括最后按下Enter 的换行字元,你可以试着上例中的。作结尾,若要得知字串所含字元长度(不包括空字元),则可以使用。在C 语言中,字串是一个字元阵列,最后一个字元以空字元。第一个参数是目的字元阵列,第二个参数是来源字串,第三个参数则是要复制的字元长度,要注意的是,函式,若要复制字串中若干字元内容,可以使用。
2024-05-09 16:46:26
321
1
原创 C语言回圈认知之九九乘法
回圈的语法其实只是将三个复合陈述区块写在一个括号中而已,所不同的是第一个陈述区块只会执行一次,第二个陈述区块专司判断,而第三个陈述区块只是一般的陈述句,而不一定只放递增运算式。回圈的第一个初始变数陈述句只会执行一次,之后每次重新进行回圈时,都会根据判断式来判断是否执行下一个回圈,而每次执行完回圈之后,都会执行递增式一次。回圈的括号中之写法,当然原则上并不鼓励这么写,程式基本上还是以清楚易懂为原则!)作区隔,有兴趣的话,看看下面这个九九乘法表的写法,它只使用了一个。如果陈述句只有一个,也就是非复合陈述句,
2024-05-08 14:57:22
151
原创 C语言 指标、阵列与结构
我们以sizeof 求得单一元素的大小后,乘上阵列的长度sz 即可配置一块足够大小的记忆体,用来储存阵列arr 的元素。在C语言,一个字串本身会在结尾自带\0结束字元,所以当我们把一个字串用阵列储存时,实际结尾会有一个\0也被储存。在此范例程式中,我们在第6 行分别计算阵列大小和阵列元素大小,将其相除后即可得阵列长度。但这个方式只对自动配置记忆体的阵列有效,若阵列使用动态配置记忆体,则无法使用这个方法。先前的范例皆为一维阵列,但C 语言允许多维阵列。在阵列的存放,是一个长度为6的阵列,最后摆放\0。
2024-05-05 14:57:45
567
2
原创 C语言算术运算、型态转换
格式指定字,这是C 的隐式型态转换(Implicit type conversion),在一个型态混杂的算式中,长度较长的资料型态会成为目标型态,较小的型态会自动提升为目标型态,因而在上例中3会被提升为3.0 再进行运算,结果就可以显示无误,这样的转换又称算术转换(Arithmetic conversion)。的值最后会是10.0,在指定的动作时,如果右边的数值型态比左边的数值型态型态长度大时,超出可储存范围的部份会被自动消去,例如将浮点数指定给整数变数,则小数的部份会被自动消去,例子如下,
2024-05-03 16:04:52
385
1
原创 多云时代来临,一文了解你该做什么
随着云端环境的可携性日渐增强,将能为用户带来更自由的选择,更多节省成本的机会,以及更高的资料控制能力。为了消除这种壁垒,企业必须使用开源技术在不同云端之间建立连接,开发者可以借助这样的工具建立「供应商中立」的客制化应用程式(可将其类比为适配器或转换器),借此与非模组化的工具实现相容,进而促进可移植性。用户对可移植性有需求,这使得提供者有责任为可移植性提供更高程度的支持,但不同提供者的专有功能依然在多个云端之间制造了不小的壁垒,限制了数据或应用程式的移动。故障发生后,能透过备份进行故障转移,无疑是最好的。
2024-05-01 16:08:12
50
原创 十分钟快速上手CCS,选择器(Selector)
主要有四个选择器「元素」、「class」、「id」、「属性」,被选择到的对象,就会套用该设定值,未被选择到的项目就已预设值显示。使用方式:先输入「元素」或「class」或「id」,再接着「>」符号或「一个空格」,在输入「子元素」。可以针对「元素」或「class」或「id」下的子元素进行设定,减少「子元素」设定「元素class」或「元素id」的动作。会使用「属性」,表示仅针对有相应的「属性」之元素进行套用,有一定程度的减少设定「元素class」或「元素id」的动作。(一)、「元素(tag)」选择器。
2024-04-27 15:48:43
818
原创 Javascript 轻松获得元素大小、位置的实用方法| getBoundingClientRect()
他使用的时机蛮广的,例如我想做navebar toggle,让我的linksContainer中可以动态添加links而不需要把高度写死,这时就可以用。然后注意他的宽跟高是有包含border宽度的;left : 元素的 borderBox 左上角相于视窗的水平(X)座,等同 x。top:元素的 borderBox 左上角相于视窗的垂直(Y)座,等同 y。x: 元素的 borderBox 左上角相于视窗的水平(X)座槽。y:元素的 borderBox 左上角相于视窗的垂直(Y)座槽。
2024-04-23 18:59:45
325
1
原创 建立虚拟机in Cent OS by KVM
安装过程可能有点久,如果长时间卡在一画面,可能会是记忆体不足或是网路问题导致下载失败,可以直接跳到最后方删除该虚拟鸡的所有资讯,调整后再重新建立虚拟机。它是基于Red Hat Enterprise Linux (RHEL)的源码重新构建的,因此能够与RHEL高度兼容,拥有相同的软件包管理系统和软件库。CentOS提供了一个稳健的环境,适合运行高要求的服务器和应用,并且保持免费使用,广受全球许多企业和专业人士的信赖和使用。同时它的社区支持也非常活跃,提供了大量的文档、论坛和IRC频道来帮助使用者解决问题。
2024-04-20 16:38:45
324
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人