
C/C++
文章平均质量分 62
神一样的编码
to build a whole new world
展开
-
枚举小例子
#include#includeenum color{red,green,black,white,blue};//如果指定red=11则后续依次递增void main(){enum color col;col = red;//也可以col = 11;因为col是弱类型printf("%d",col);printf("%d",red);printf("\n%d",原创 2015-09-14 22:57:48 · 302 阅读 · 0 评论 -
默认参数和占位参数
C++中的const常量可以替代宏常数定义,如:const int A = 3; è #define A 3C++中是否有解决方案替代宏代码片段呢?(替代宏代码片段就可以避免宏的副作用!)C++中推荐使用内联函数替代宏代码片段C++中使用inline关键字声明内联函数内联函数声明时inline关键字必须和函数定义结合在一起,否则编译器会直接忽略内原创 2016-02-21 18:46:44 · 1492 阅读 · 0 评论 -
函数重载
函数重载(Function Overload)用同一个函数名定义不同的函数当函数名和不同的参数搭配时函数的含义不同 函数重载至少满足下面的一个条件:参数个数不同参数类型不同参数顺序不同函数返回类型不是函数重载的判断标准!!!int =0占位符也不是函数重载的判断标准!!!void myprintf(int a, int b){printf("a:%d原创 2016-02-21 18:48:06 · 250 阅读 · 0 评论 -
读写文件实例
//按照字符写文件void readByChar(){int i = 0;FILE *fp = NULL;char a[] = "ssssssssss";char *filename="f:/2.txt";fp = fopen(filename,"a+");if(fp ==NULL){printf("err");}for(i = 0;i{fp原创 2016-02-21 18:50:06 · 353 阅读 · 0 评论 -
构造函数初始化
类的成员不允许设定初始值!private:int m_a = 10; //错误=====================================================================class Test{public: //有参构造函数Test(int a){m_a = a;}//无参数构造函数Test(原创 2016-02-21 18:52:06 · 341 阅读 · 0 评论 -
拷贝构造函数与析构顺序
调用复制构造函数的时机:1,用一个已有对象初始化另一个对象 void main(){Test88 t1;Test88 t3;//第一种场景//1赋值构造函数和=操作是两个不同的概念//2 赋值构造函数 copy构造函数 也是构造函数//3 当没有编写拷贝构造函数时,编译器会默认提供一个copy构造函数,执行浅拷贝//在这个场景之下。t2被创建,并且自动的调原创 2016-02-21 18:53:16 · 1503 阅读 · 0 评论 -
深复制和浅复制
1,默认复制构造函数可以完成对象的数据成员值简单的复制2,对象的数据资源是由指针指向的堆时,默认复制构造函数仅作指针值复制两对象共享一块内存class name{ public :name(char *pn) ; name( name &obj){cout char *pn = obj.getPn();pname = (char原创 2016-02-21 18:54:07 · 354 阅读 · 0 评论 -
类模板遇上友元函数
#include using namespace std; templateclass Complex{ public:Complex( T r =0, T i =0 );Complex(T a) { Real = a ; Image = 0 ; } void print() const; friend Complexoperator+(Complex&原创 2016-02-23 18:39:21 · 1066 阅读 · 0 评论 -
模板
函数模板:template T>类型 函数名(形参列表){}类模板:template类型 函数名(形参列表){}//template关键字告诉c++编译器,现在开始泛型编程//typename 告诉c++编译器,T为类型(T为类型,可以参数化,int float),你不要乱报错//类型参数化。。。。。。。templatevoi原创 2016-02-23 18:39:39 · 335 阅读 · 0 评论 -
虚继承
#include "iostream"using namespace std; class base{public:int k;void printI(){//cout}protected:private:};class base1 : virtual public base{public:int i;void printI(原创 2016-02-23 18:41:01 · 289 阅读 · 0 评论 -
多态原理分析
#include using namespace std;问题导出://1 函数重写print//2赋值兼容性原则(把子类对象赋给父类指针或者引用)//3函数重写遇上赋值兼容性原则//这个就是面向对象的新需求//针对这个函数void howToPrintf(Parent *base),我希望是//如果传来父类对象,那么应该执行父类函数//如果传来子类对象,那么执原创 2016-02-23 18:42:53 · 558 阅读 · 0 评论 -
继承
赋值兼容性原则:子类是一中特殊的父类 子类可以当父类使用如果父类和子类定义的数据成员重名,如何确定调用哪个?#include "iostream"using namespace std;class A{public:int a;int b;A(int a = 0, int b =0){this->a = a;this-原创 2016-02-23 18:43:17 · 289 阅读 · 0 评论 -
运算符重载
类型 类名::operator 运算符(参数){}class Complex{public:int a;int b;public:Complex(int a = 0, int b = 0){this->a = a;this->b = b;}void printCom(){cout}};void main01()原创 2016-02-23 18:43:46 · 284 阅读 · 0 评论 -
友元函数与友元类
class Test2{public://友元函数的特点是:有一个参数是友元类的指针或引用(可访问该类的私有成员)friend int OpMem(Test2 *p, int a); //友元函数,声明位置可随意Test2(int a, int b){this->a = a;this->b = b;}int getA(){return this->a原创 2016-02-23 18:43:58 · 375 阅读 · 0 评论 -
全局函数和成员函数
class Test1{public://Test1(this, int a, int b) .//全局函数形式Test1(int a=0, int b=0){this->a = a;this->b = b;}public:int a;int b;public://成员函数Test1& T_add(Test1 &t2){// Tes原创 2016-02-23 18:44:19 · 1482 阅读 · 0 评论 -
c++中new与delete
New:从对空间分配一块类型大小空间,返回首地址其中常量是为对象指定初始值,可缺省,创建数组对象时不能为对象指定初始值类型 指针 = new 类型;类型 指针 = new 类型(常量);//直接初始化类型 指针 = new 类型[表达式];//定义数组Delete:其中指针变量必须为new 返回的指针Delete 指针;Delete[] 指针变量;原创 2016-02-23 18:44:38 · 342 阅读 · 0 评论 -
static静态变量分析
1,静态局部变量,在全局区分配内存,生命周期是整个程序运行时间,作用域是该局部作用域//static int a = 10; 把a变成一个状态变量//a初始化的时候10 ,只初始化一次,之后static int a = 10;不再执行//a = 11 int& mygg(){static int a = 10;printf("a:%d", a);return原创 2016-02-21 18:45:41 · 415 阅读 · 0 评论 -
C++引用
一;普通引用语法:类型+&+变量名= 被引用变量名在C++内部,引用是一个常量指针,Type & name = Type* const name,因此它的分配内存数与指针一样大引用本质就是对变量取地址int myf1(){int a ;a = 10;return a;} int& myf2(原创 2016-02-21 18:37:28 · 355 阅读 · 0 评论 -
vs2010快捷键
ctrl+j提示VS2010版快捷键Ctrl+E,D ----格式化全部代码 Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL + SHIFT + O打开项目 CTRL + SHIFT + C显示类视图窗口 F4 显示属性窗口 SHIFT +原创 2015-09-14 22:59:10 · 282 阅读 · 0 评论 -
链表初始化为什么要用双重指针
【链表初始化为什么要用双重指针】如:typedef DataType int typedef struct Node{ DataType data; struct Node *next; }LNode,*PNode,*LinkList; int Initial(LinkList *h){ //参数为头结点指针的地址,也就是指针的指针原创 2015-09-14 22:56:09 · 1098 阅读 · 0 评论 -
const与define的区别
【const与define的区别】(1) 编译器处理方式不同 define宏是在预处理阶段展开。 const常量是编译运行阶段使用。(2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开。 const常量有具体的类型,在编译阶段会执行类型检查。(3) 存储方式不同 define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内原创 2015-09-14 22:53:28 · 300 阅读 · 0 评论 -
C++项目中的extern "C" {}
在用C++的项目源码中,经常会不可避免的会看到下面的代码:123456789#ifdef __cplusplusextern "C" {#endif /*...*/ #ifdef __cplusplus}#end转载 2015-10-25 19:28:47 · 366 阅读 · 0 评论 -
安装msi程序出现2502、2503错误解决方法
在Win8中,在安装msi安装包的时候常常会出现代码为2502、2503的错误。其实这种错误是由于安装权限不足造成的,可以这种msi的安装包不像其他exe的安装程序,在安装包上点击“右键”之后没有“以管理员身份运行”的选项。那么,在Win8中安装程序出现2502、2503错误的时候该怎么办呢?请跟我一起来看看1,把鼠标放到Win8屏幕的最左下角,等待Win8 Metro界面的缩略图出现后点转载 2015-12-17 22:08:50 · 1283 阅读 · 0 评论 -
内存四区与指针的分析
数据类型:数据类型是固定内存大小的别名。int a[10]={};a的大小等于&a,但a+1的大小不等于&a+1,原因是数据类型不一样变量:变量是内存空间的标号内存四区堆区,栈区,全局(静态)和常量区,代码区全局(静态)和常量区:如果两个字符串完全一样C++编译器只会定义一份原创 2016-02-21 18:20:03 · 376 阅读 · 0 评论 -
数组与字符串
//初始化数组有两种方法//1 不指定长度char buf[] = {'a', 'b', 'c'}; //buf是个指针 是个常量指针 //2 指定长度char buf2[10] = {'a', 'b', 'c'};//3 字符串和字符数组的区别char buf3[] = {'a', 'b', 'c', '\0'}; //buf是个指针 是个常量指针 3原创 2016-02-21 18:23:58 · 374 阅读 · 0 评论 -
二级指针
第一种:char *ArrayStr[] = {"ccccc", "aaaa", "bbbb","11111"};第二种:char myArray[10][30] = {"ccccc", "aaaa", "bbbb","11111"};第三种char **myarray = (char **)ma原创 2016-02-21 18:26:51 · 265 阅读 · 0 评论 -
数组指针的分析
int main01(){int i = 0;//a代表数组首元素的地址,不是整个数组的地址//&a表示整个数组的地址 &a a代表的数据类型不一样//&a 数组类型 int[10]//a 数组首元素的类型int a[10] = {1,2}; //其他初始化为0int b[] = {1,2};int c[20] = {0}; //编译期间搞定for原创 2016-02-21 18:28:18 · 235 阅读 · 0 评论 -
多维数组
//1 不管是几维数组,都是线性存储的。所以会存在多维数组做函数参数,退化问题//2 多维数组做函数参数 二维数组,能勉强表达出来。但是三维数组,四维数组,,就表达不出来了。//结论:指针做函数参数,有效内存维数,只到2级。。如果你看到3级指针 4级指针,它表示的不是内存的维数对维数组还书参数推演:int printf1Array(char buf[原创 2016-02-21 18:29:55 · 267 阅读 · 0 评论 -
结构体使用分析
//结构体分配内存是四个字节一行struct Teacher{char name[62]; //64int age;//4char c1;char c2;}; 大小为72struct Teacher{char c1;char c2;char name[62]; //64int age;//4}; 大小为68原创 2016-02-21 18:31:07 · 309 阅读 · 0 评论 -
C语言文件操作函数大全
表头文件 #include 定义函数 void clearerr(FILE * stream); 函数说明 clearerr()清除参数stream指定的文件流所使用的错误旗标。 返回值 fclose(关闭文件) 相关函数 close,fflush,fopen,setbuf 表头文件 #include 定义函数 int fclose(FILE原创 2016-02-21 18:33:23 · 443 阅读 · 0 评论 -
c与c++不同的总结
1, 在c语言中 register修饰的变量 不能取地址,C++中可以取得register变量的地址,C++编译器做了优化,C++编译器发现程序中需要取register变量的地址时,register对变量的声明变得无效2, C语言中多个同名的全局变量最终会被链接到全局数据区的同一个地址空间上,在C++中,不允许定义多个同名的全局变量,直接拒绝这种二义性做法3, C语言的struct定义了一原创 2016-02-21 18:34:35 · 288 阅读 · 0 评论 -
C++对C的增强
c++中namespace:C++中的标识符cout,cin,都被定义在 std的命名空间内可以用using namespace std;引用该命名空间为了避免程序员在大规模程序设计或引用多个c++库时造成标识符冲突,可以使用命名空间Std是c++标准库的命名空间,如库中iostream,vector原创 2016-02-21 18:35:39 · 316 阅读 · 0 评论 -
Const和#define
C++中的const类似于宏定义Const int c = 5 ≈#define c 5C++中的常量与宏定义不同Const常量有编译器处理,提供类型检查和作用域检查#define预处理器处理,只是单纯的文本替换例:Void fun1(){#define a 10Const int b = 20;//#undef //取消该句以后的作用域}Void原创 2016-02-21 18:36:33 · 261 阅读 · 0 评论 -
C++构造函数调用规则
1,当类中没有没有定义任何构造函数时,c++编译器提供默认无参构造函数和拷贝构造函数2,当类中有任何非拷贝构造函数时,编译器不会提供无参构造函数3,当类中有定义了拷贝构造函数时,编译器不会提供无参构造函数构造函数初始化列表:class EE{public://构造函数的初始化列表//EE(int _a):d1(1),d原创 2016-02-23 18:45:41 · 393 阅读 · 0 评论