C++基础进阶
意念586
电力系统继电保护装置-嵌入式软件开发
展开
-
C++静态数据成员与静态成员函数
一般情况下,如果有n个同类的对象,那么每一个对象都分别有自己的数据成员,不同对象的数据成员各自有值,互不相干。但是有时人们希望有某一个或几个数据成员为所有对象所共有,这样可以实现数据共享。可以使用全局变量来达到共享数据的目的。例如在一个程序文件中有多个函数,每一个函数都可以改变全局变量的值,全局变量的值为各函数共享。但是用全局变量的安全性得不到保证,由于在各处都可以自由地修改全局变量的值,原创 2015-01-30 09:02:59 · 738 阅读 · 0 评论 -
C++静态数据成员变量解析
问题1: 为什么在类内的静态成员定义后,要到类的外部在定义和初始化?答:首先这句话就是错的,在类内的静态成员变量只是一定声明,并没有分配相应的内存空间;在类外,相当于定义加上初始化,如果只是定义,也是能够编译成功的,因为分配了内存。等价于全局变量,但只属于类。问题2:为什么类的静态成员在类外部的定义只能一次?答:好比全局变量的多重定义转载 2016-10-23 23:14:36 · 344 阅读 · 0 评论 -
C++虚函数定义
多态是指使用相同的函数名来访问函数不同的实现方法,即“一种接口,多种方法”,用相同的形式访问一组通用的运算,每个运算可能对应的行为不同。C++支持编译时多态和运行时多态,运算符重载和函数重载就是编译时多态,而派生类和虚函数实现运行时多态。运行时多态的基础是基类指针,基类指针可以指向任何派生类对象。虚函数与基类指针在一起时会有奇妙的现象...1.虚函数是为了实现多态而存在转载 2016-09-13 23:12:47 · 839 阅读 · 0 评论 -
atoi() 函数解析
头文件:#include atoi() 函数用来将字符串转换成整数(int),其原型为:int atoi (const char * str);【函数说明】atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并原创 2016-07-13 22:31:59 · 430 阅读 · 0 评论 -
#pragma pack 解析
这是给编译器用的参数设置,有关结构体字节对齐方式设置, #pragma pack是指定数据在内存中的对齐方式。#pragma pack (n) 作用:C编译器将按照n个字节对齐。#pragma pack () 作用:取消自定义字节对齐方式。#pragma pack (push,1) 作用:是指把原来对齐方式设置压栈,并设原创 2016-01-06 10:00:29 · 577 阅读 · 0 评论 -
静态函数的优点 static
静态函数在函数的返回类型前加上关键字static,函数就被定义成为静态函数。 函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。定义静态函数的好处: 其他文件中可以定义相同名字的函数,不会发生冲突 静态函数不能被其他文件所用。 存储说明符auto,register,extern,static,对应两种存储期:自动存储期和静态原创 2016-01-04 13:39:15 · 5723 阅读 · 0 评论 -
extern "C"解释
extern "C"的用法解析C++中extern “C”含义深层探索 1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向原创 2015-08-21 09:16:28 · 550 阅读 · 0 评论 -
C++中调用C语言库文件
我们都知道C++语言兼容C语言,那么C++调用C语言库,为什么为什么需要 extern "C"的帮助?答案就是C++语言为了支持重构(重构的特征:相同的范围、相同的名字、不同的参数),在编译时对函数的命名方式进行了改变,编译后的名字包括一些参数的信息,这样才能在调用函数的时候对号入座。 那么extern "C"的作用,就是“提示”(为什么说提示,而不是“命令”呢,下面会分析)编译器,转载 2015-05-21 09:52:33 · 2856 阅读 · 0 评论 -
C++中构造函数的理解
创建一个对象时,常常需要作某些初始化的工作,例如对数据成员赋初值。注意,类的数据成员是不能在声明类时初始化的。如果一个类中所有的成员都是公用的,则可以在定义对象时对数据成员进行初始化。如:class Time{ public : //声明为公用成员 hour; minute; sec;};Time t1={14,56,30}; //将t1初始化为14:56:3原创 2015-01-22 14:36:07 · 1371 阅读 · 0 评论 -
C++共用体的介绍
有时需要使几种不同类型的变量存放到同一段内存单元中。例如,可把一个整型变量、一个字符型变量、一个双精度型变量放在同一个地址开始的内存单元中(见图7.12)。图7.12以上3个变量在内存中占的字节数不同,但都从同一地址开始存放。也就是使用覆盖技术,几个变量互相覆盖。这种使几个不同的变量共占同一段内存的结构,称为共用体(union )类型的结构(有些书译为联合)。原创 2015-01-16 12:31:45 · 1037 阅读 · 0 评论 -
MFC-Socket通信
服务器界面: 大家先去 附件中 把代码下下来,否则看文章是看不懂的。服务端代码,打开类视图,找到ListenThreadFunc函数。这是我们的线程函数,socket代码在该线程里执行。01DWORD WINAPI ListenThreadFunc(LPVOID Lparam)02原创 2015-02-04 09:48:59 · 2125 阅读 · 1 评论 -
C++构造函数与析构函数的解析
创建一个对象时,常常需要作某些初始化的工作,例如对数据成员赋初值。注意,类的数据成员是不能在声明类时初始化的。如果一个类中所有的成员都是公用的,则可以在定义对象时对数据成员进行初始化。如:class Time{ public : //声明为公用成员 hour; minute; sec;};Time t1={14,56,30}; //将t1初始化为14:56:3原创 2015-01-16 09:20:59 · 12485 阅读 · 4 评论 -
C++虚函数的定义与意义
我们知道,在同一类中是不能定义两个名字相同、参数个数和类型都相同的函数的,否则就是“重复定义”。但是在类的继承层次结构中,在不同的层次中可以出现名字相同、参数个数和类型都相同而功能不同的函数。例如在例12.1(具体代码请查看:C++多态性的一个典型例子)程序中,在Circle类中定义了 area函数,在Circle类的派生类Cylinder中也定义了一个area函数。这两个函数不仅名字相同,而原创 2015-01-30 09:55:46 · 5668 阅读 · 2 评论 -
Qt C++中的关键字explicit
关键字 explicit 可以禁止“单参数构造函数”被用于自动类型转换。光看这一句似乎不太容易明白,下面,举个简单地例子。 //main.cpp #include <iostream> using namespace std; class Test { pu...转载 2018-07-13 22:32:20 · 151 阅读 · 0 评论