精选文章

Android下使用TCPDUMP抓包Wireshark分析数据 如果想分析Android下某个APP的网络数据交互,需要在Android手机上抓包,最常用的抓包工具非tcpdump莫属,用tcpdump生成Wireshark识别的pcap文件,然后将pcap文件下载到电脑上,用电脑上的Wireshark加载pcap文件,通过Wireshark分析tcpdump抓取的数据。...

继续阅读

Mac下部署Android开发环境附加NDK 作为开发者,我们深有体会,不管是进行什么开发,为了部署开发环境,我们往往需要折腾很长时间、查阅很多资料才能完成,而且这次折腾完了,下次到了另一台新电脑上又得重新来过,整个部署过程记得还好,要是不记得又得重新开始,而且遇到Android这种GFW阻隔了开发资源下载链接的环境部署,又尤其浪费时间。所以这也是我写下这篇教程的初衷跟动力源泉,希望大家参考了这篇教程以后可以轻轻松松在Mac系统下将Android环境部署好。...

继续阅读

稍顯嚴肅的台中 坦白說,留在腦海中的台中影像並不多,來台灣之前在Booking上只訂到了台中的一家青旅,第一次住青旅有些不習慣,幹什麼都放不開。 同屋的一個男生是台灣人,不過一年中四分之三的時間在上海跟北京,這麼說來跟我還是比較有共同話題的。得之我準備花15天的時間環島,覺得太倉促了,他們大學時期花一個半月的時間也不見得能將台灣島給逛完。我只能無奈地表示,兩岸允許的簽證時間有限,自己的空閒時間更有限,只能用打卡式的旅行了,我深知正真地旅行應該慢下來,融入當地的環境,感受他們的風土人情,但第一次只能這樣作罷,以後換成民進黨上台,形勢會變成怎樣還不得而知,能否再過來還是個未知數。而我一向信奉的人生格言是秉燭夜遊,活在當下,所以,理解自己吧。...

继续阅读

為之留戀的新竹 來新竹之前本沒有對她有過高的期待,慢慢對她加分要從桃園火車站出發前往新竹開始。 在桃園火車站的候車月台上,有醒目的旅遊資料發放處,這上面的擺放的全是新竹的旅遊宣傳資料,關鍵的是資料做得非常簡潔易懂,而接下來一天的新竹之行就全部是依據這份寶典的指引來完成的。...

继续阅读

從桃園開始台灣之行 初到台灣恰逢華夏銀行系統升級,特意準備的華夏銀聯卡在桃園機場沒能派上用場,只好用建行在機場5000塊,算下來是很不划算的,但是沒辦法,誰叫我出機場就得花錢呢。 從機場打車到桃園的酒店,花了將近六百塊新台幣,到酒店時五點多,天已經漸亮了,洗漱完等到七點吃過早餐就開始補覺囉,一覺醒來已是中午,帶著換下來的衣服外出找自助洗衣店,順便覓食。...

继续阅读

  • Prev
  • Next

C++Primer笔记之变量和基本类型

4

分章分类 : C++, C++Primer笔记

1、函数体外定义的未初始化的变量初始值皆为0,函数体内定义的初始化的变量初始值不定。

2、extern声明不是定义,也不分配存储空间,它只是说明常量定义在程序的其他地方。程序中变量可以声明多次,但只能定义一次。

3、只有在函数外部时,extern int week = 7 才能编译通过,因为只有全局常变量才能在其他地方所引用。

4、C++程序中每个名字都与唯一的实体(比如变量、函数和类型等)相关联,名字的唯一性在一定的范围内保证,而这一范围就叫作用域。通常作用域分为三种,全局作用域、局部作用域和语句作用域,其实还有更广义的类作用域和命名空间作用域。

5、作用域可以嵌套,即局部作用域内定义的变量会覆盖全局作用域内定义的同名变量,但通常不鼓励这样重名定义。

阅读全文

C++中的虚基类

9

分章分类 : C++

多基派生中的多条路径具有公共基类时,在这条路径的汇合处就会因对公共基类产生多个拷贝而产生同名函数调用的二义性。解决这个问题的办法就是把公共基类定义为虚基类,使由它派生的多条路径的汇聚处只产生一个拷贝。

class Base{ };
class A : public Base{ };
class B: public Base{ };
class C: public A, public B{ };

类C中继承了两个类Base,即有两个类Base的实现部分,在调用时产生了二义性。 阅读全文

C++中的纯虚函数

分章分类 : C++

在基类中不对虚函数给出有意义的实现,它只是在派生类中有具体的意义。这时基类中的虚函数只是一个入口,具体的目的地由不同的派生类中的对象决定。这样的虚函数称为纯虚函数。

class    <基类名>
{
      virtual <类型><函数名>(<参数表>)=0;
      ......
};

上面是虚函数的一般定义形式。 阅读全文

C++中的虚函数

分章分类 : C++

一、虚函数的定义和使用

可以在程序运行时通过调用相同的函数名而实现不同功能的函数称为虚函数。定义格式为:

virtual  <type>  FuncName(<ArgList>);

一旦把基类的成员函数定义为虚函数,由基类所派生出来的所有派生类中,该函数均保持虚函数的特性。 在派生类中重新定义基类中的虚函数时,可以不用关键字virtual来修饰这个成员函数 。虚函数是用关键字virtual修饰的某基类中的protected或public成员函数(当然private类的成员函数也可以是虚函数,他告诉用户你不能调用该函数,务必覆盖我它方能使用)。它可以在派生类中重新定义,以形成不同版本。只有在程序的执行过程中,依据指针具体指向哪个类对象,或依据引用哪个类对象,才能确定激活哪一个版本,实现动态聚束。 阅读全文

C++中的多态性

分章分类 : C++

多态性是面向对象的程序设计的关键技术。调用同一个函数名,可以根据需要但实现不同的功能,这便是多态。多态性分为编译时的多态(函数重载)跟运行时的多态(虚函数)。

运行时的多态是指在程序执行之前,根据函数名和参数无法确定应该调用哪一个函数,必须在程序的执行过程中根据具体的执行情况来动态地确定。可以将一个派生类对象的地址赋值给基类的指针变量。 阅读全文

cout cerr clog 的区别

分章分类 : C++

cout、cerr、clog都是ostream类中定义的输出流对象。

1、cout是标准输出流

(1)它在内存中开辟一段缓冲区,用来暂存流中的数据,如果未遇到换行符endl/(‘\n’),只有当缓冲区满的时候才输出流中的所有数据,并在数据尾部加上换行符,如遇到换行符,则立即输出。
(2)可以将数据流重定向到文件中,如将a.out的输出流存入log.txt中./a.out >> log.txt。 阅读全文

C++运算符重载

分章分类 : C++

C++自带的运算符,像加减乘除,只支持一些基本的类型,很多时候,我我们需要用运算符实现一些复杂或抽象类型的计算,计算原理或形式虽然符合该计算符,但类型不支持,比如定义一个包含实部跟虚部的复数类,标准C++要实现该类对象的加减乘除运算显然不行,但是我们可以通过C++运算符重载的办法来实现这一功能。 阅读全文

C++静态数据成员和静态成员函数

分章分类 : C++

一、静态成员变量:

primer中是这样说的,对于所有的对象共有一个成员变量的就用static ,提供一个所有对象共有的一个成员变量比“每一个类对象维护一个成员变量” 要更有效。

在这种情况下类的静态数据成员提供了一个更好的方案,静态数据成员被当作该类类型的全局对象,对于非静态数据成员,每个类对象都有自己的拷贝,而静态数据成员对每个类对象只有一个共用的静态数据成员,同全局对象相比使用静态数据成员有两个优势:
1 、静态数据成员没有进入程序的全局名字空间,因此不存在与程序中其他全局名字冲突的可能性;
2 、可以实现信息隐藏,静态成员可以是private 成员而全局对象不能。 阅读全文

友元函数和友元类

分章分类 : C++

C++采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。 阅读全文

深入探究内联函数

2

分章分类 : C++

内联函数——多么振奋人心的一项发明!它们看上去与函数很相像,它们拥有与函数类似的行为,它们要比宏好用的多,同时你在调用它们时带来的开销比一般函数小得多。可谓“内联在手,别无他求”。

你得到的远远比你想象的要多,因为节约函数调用的开销仅仅是冰山一角。编译器优化通常是针对那些没有函数调用的代码,因此当你编写内联函数时,编译器就会针对函数体的上下文进行优化工作。然而大多数编译器都不会针对“外联”函数调用进行优化。 阅读全文