摘要:互连网早期的时候,主机间的互连使用的是NCP协议。这种协议本身有很多缺陷,如:不能互连不同的主机,不能互连不同的操作系统,没有纠错功能。为了改善这种缺点,大牛弄出了TCP/IP协议。现在几乎所有的操作系统都实现了TCP/IP协议栈。 TCP/IP协议栈主要分为四层:应用层、传输层、网络层、数据链路层
阅读全文
摘要:C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。 Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 一、Const作用 如下表所示
阅读全文
摘要:C++变量根据定义位置的不同,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名作用域和文件作用域。 从作用域看: 全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包括全局变量定义的源文件需要用extern关键字再次声
阅读全文
摘要:数据成员可以分静态变量、非静态变量两种. 静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员可以直接访问类中静态
阅读全文
摘要:用内联取代宏: 1.内联函数在运行时可调试,而宏定义不可以;2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会; 3.内联函数可以访问类的成员变量,宏定义则不能; 4.在类中声明同时定义的成员函数,自动转化为内联函数。 文章(一) 内联函数与宏定义 在C中,常用预
阅读全文
摘要:很多人认为,C++中是不存在接口继承的,只有Java、C#这类语言才提供了相应的语法支持。 但是,如同鲁迅说过的某句名言:世上本没有接口继承,用的人多了,才有了接口继承。C++中依然可以实现接口继承,只是形式上稍有不同罢了。 C++中的继承基于一个事实:父类定义的成员函数会一直被子类继承(包括被子类
阅读全文
摘要:1.拷贝构造函数是一种特殊的构造函数,具有单个形参,此形参是对该类型的引用。 当定义一个新对象并用一个同类型的对象对它进行初始化时,将显示使用拷贝构造函数。 2.当将该类型的对象传递给函数或从函数返回该类型的对象时,将隐式的调用拷贝构造函数。 3.如果一个类没有定义拷贝构造函数,编译器会默认提供拷贝
阅读全文
摘要:将数据成员和成员函数包装进类中,加上具体实现的隐藏共同被称作封装,其结果是一个同时 带有特性和行为的数据结构。 将数据和实现细节隐藏的原因: 1.对模块的任何实现细节所作的更改不会影响使用该模块的代码 2.防止用户意外修改数据 3.使模块易于使用和维护
阅读全文
摘要:在类成员函数的重载 1.类的成员函数可以像普通函数一样重载 2.但不同的类即使有相同的函数名也不算是重载
阅读全文
摘要:在类中定义成员函数 类中定义的成员函数一般为内联函数,即使没有明确用关键字inline标示 在C++中,类定义通常在头文件中,因此这些成员函数定义也伴随着进入头文件 在类之后定义成员函数 C++允许在其他地方定义成员函数 将类定义和其成员函数定义分开
阅读全文
摘要:类: 类是创建对象的模板和蓝图 类是一组类似对象的共同抽象定义 对象: 对象是类的实例化结果 对象是实实在在地存在,代表现实世界的某一事物 对象三大关键特性 行为:对象能干什么 状态:对象的属性,行为的结果 标识:对象的唯一身份 区别: 类是静态定义 对象是动态实例 程序代码操作的是对象而非类 建模
阅读全文
摘要:指针是个变量,可以把它再赋值成指向别处的地址 建立引用时必须进行初始化并且决不会再关联其他不同的变量 函数只能返回一个值。如果程序需要从函数返回两个值怎么办? 解决这一问题的办法之一是使用引用给函数传递两个参数,然后由函数往目标中填入正确的值 函数返回值时,要生成一个值的副本。而用引用返回值时,不生
阅读全文
摘要:指针是个变量,可以把它再赋值成指向别处的地址 建立引用时必须进行初始化并且决不会再关联其他不同的变量 函数只能返回一个值。如果程序需要从函数返回两个值怎么办? 解决这一问题的办法之一是使用引用给函数传递两个参数,然后由函数往目标中填入正确的值 函数返回值时,要生成一个值的副本。而用引用返回值时,不生
阅读全文
摘要:1. this指针的用处: 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也
阅读全文
摘要:虚函数为了重载和多态的需要,在基类中是由定义的,即便定义是空,所以子类中可以重写也可以不写基类中的函数! 纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数! 虚函数 引入原因:为了方便使用多态特性,我们常常需要在基类中定义虚函数。 class Cman { public:
阅读全文
摘要:版权声明:欢迎转载,注明出处就好!如果不喜欢请留言说明原因再踩哦,谢谢,我也可以知道原因,不断进步!! 版权声明:欢迎转载,注明出处就好!如果不喜欢请留言说明原因再踩哦,谢谢,我也可以知道原因,不断进步!! 目录(?)[+] 目录(?)[+] 一、文章来由 现在在写一个项目,需要用到多叉树存储结构,
阅读全文
摘要:本系列文章由@浅墨_毛星云 出品,转载请注明出处。 文章链接: http://blog.csdn.net/poem_qianmo/article/details/52268975 作者:毛星云(浅墨) 微博:http://weibo.com/u/1723155442 这篇文章将与大家一起聊一聊,书写
阅读全文
摘要:静态成员函数不能访问非静态成员,这是因为静态函数属于类而不是属于整个对象,静态函数中的 member可能都没有分配内存。静态成员函数没有隐含的this自变量。所以,它就无法访问自己类的非静态成员 代码如下: class a{public: static FunctionA() { menber =
阅读全文
摘要:从理论上来说,这三个概念很容易背的滚瓜烂熟,但是从大学毕业到现在,我都没真正搞明白这三个东西的出现,究竟是为了做到什么事情。 也许之前我很少写代码,更很少写面向对象的代码,即使有写多半也很容易写回到面向过程的老路上去。在写面向过程的代码的时候,根本不管什么函数重载和覆盖,想到要什么功能就变得法子的换
阅读全文
摘要:析构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。 前面的一些例子都没有说明析构函数,这是因为所
阅读全文
摘要:C语言中堆和栈的区别 一.前言: C语言程序经过编译连接后形成编译、连接后形成的二进制映像文件由栈,堆,数据段(由三部分部分组成:只读数据段,已经初始化读写数据段,未初始化数据段即BBS)和代码段组成,如下图所示: 1.栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量等值。其操作
阅读全文
摘要:1.C++规定,每个类必须有默认的构造函数,没有构造函数就不能创建对象。 2.若没有提供任何构造函数,那么c++提供自动提供一个默认的构造函数,该默认构造函数是一个没有参数的构造函数,它仅仅负责创建对象而不做任何赋值操作。 3.只要类中提供了任意一个构造函数,那么c++就不在自动提供默认构造函数。
阅读全文
摘要:也许很多C++的初学者都知道什么是构造函数,但是对复制构造函数(copy constructor)却还很陌生。对于我来说,在写代码的时候能用得上复制构造函数的机会并不多,不过这并不说明复制构造函数没什么用,其实复制构造函数能解决一些我们常常会忽略的问题。 为了说明复制构造函数作用,我先说说我们在编程
阅读全文
摘要:一. 什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: [c-sharp] view plain copy int a = 100; int b = a; [c-sharp] view plain copy [c-sharp] view plain copy 而类对象
阅读全文
摘要:C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。运算符重载的实质是函数重载,它提供了C++的可扩展性,也是C++最吸引人的特性之一
阅读全文