随笔分类 -  C/C++

摘要:1. 用预处理指令#define 声明一个常数,用以表明 1 年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2). 懂得预... 阅读全文
posted @ 2014-05-15 21:30 LubinLew 阅读(817) 评论(0) 推荐(1)
摘要:1、构造函数的调用顺序基类构造函数、对象成员构造函数、派生类本身的构造函数2、析构函数的调用顺序派生类本身的析构函数、对象成员析构函数、基类析构函数(与构造顺序正好相反)3、特例局部对象,在退出程序块时析构静态对象,在定义所在文件结束时析构全局对象,在程序结束时析构继承对象,先析构派生类,再析构父类... 阅读全文
posted @ 2014-05-14 17:20 LubinLew 阅读(13782) 评论(1) 推荐(1)
摘要:1、类的构成及封装1.1、访问权限限定符C++类中为了实现隐藏、限制对某些成员的非法访问,设置了3个访问限定符。public:公有成员,也称为类的接口,可以被类内核类外的函数访问。protected:保护成员,与继承相关。private:私有成员,只能被类内的函数访问。1.2、定义类时的注意事项(1... 阅读全文
posted @ 2014-05-13 17:10 LubinLew 阅读(317) 评论(0) 推荐(0)
摘要:成员函数不能定义 this 形参,而是由编译器隐含地定义。成员函数的函数体可以显式使用 this 指针,但不是必须这么做。如果对类成员的引用没有限定,编译器会将这种引用处理成通过 this 指针的引用。尽管在成员函数内部显式引用 this 通常是不必要的,但有一种情况下必须这样做:当我们需要将一个对... 阅读全文
posted @ 2014-05-13 15:49 LubinLew 阅读(637) 评论(0) 推荐(0)
摘要:析构函数是构造函数的互补:当对象超出作用域或动态分配的对象被删除时,将自动调用析构函数。析构函数可用于释放对象时构造或在对象的生命期中所获取的资源。不管类是否定义了自己的析构函数,编译器都自动执行类中非static 数据成员的析构函数。1、析构函数的特点(1)、析构函数没有返回值和参数列表(2)、析... 阅读全文
posted @ 2014-05-13 15:11 LubinLew 阅读(5013) 评论(0) 推荐(1)
摘要:构造函数是特殊的成员函数,只要创建类类型的新对象,都要执行构造函数,定义对象指针不会调用构造函数。创建类类型的新对象时,编译器为对象分配内存空间,完成后自动调用构造函数初始化对象的数据成员。构造函数的主要工作是初始化对象的数据成员。0、构造函数的特点(1)、构造函数与类同名(2)、构造函数没有返回类... 阅读全文
posted @ 2014-05-13 14:53 LubinLew 阅读(1164) 评论(0) 推荐(0)
摘要:1、成员变量成员变量可以是任何类型,如基本数据类型、引用、另一个类的对象或指针、自身类的引用或指针,但不能是自身类的对象;成员变量不能指定为auto、register、extern 存储类型。1.1、普通成员变量普通成员变量是属于对象的,其生命周期就是对象的生命周期,只能通过构造函数的初始化列表进行... 阅读全文
posted @ 2014-05-11 13:40 LubinLew 阅读(5870) 评论(2) 推荐(1)
摘要:重载二元运算符http://www.cnblogs.com/LubinLew/p/CppOperatorOverload-BinaryOperator.html重载一元运算符http://www.cnblogs.com/LubinLew/p/CppOperatorOverload-UnaryOper... 阅读全文
posted @ 2014-05-10 17:52 LubinLew 阅读(396) 评论(0) 推荐(0)
摘要:为了与IO标准库一致,重载输入输出运算符函数的第一个行参应该是流的引用,第二个行参是对象的引用。如果重载为类的成员函数,第一个行参应该是对象的引用,第二个行参是流的引用。使用方式是 ClassObj > /*想要输入的内容1*/ >> /*想要输入的内容2*/ >>...; //检查错误 和 ... 阅读全文
posted @ 2014-05-10 17:51 LubinLew 阅读(13253) 评论(0) 推荐(1)
摘要:类型转换函数能够实现把一个类 类型 转换成 基本数据类型(int、float、double、char等) 或者 另一个类 类型。其定义形式如下,注意不能有返回值,不能有参数,只能返回要转换的数据类型。class X{public: operator TYPE() { //... 阅读全文
posted @ 2014-05-10 12:25 LubinLew 阅读(4802) 评论(0) 推荐(0)
摘要:1、重载赋值运算符=赋值运算符用于同类对象间的相互赋值。赋值运算符只能被重载为类的非静态成员函数,不能重载为友元函数和普通函数。对于用户自定义的类而言,如果没有重载赋值运算符,那么C++编译器会为该类提供一个默认的重载赋值运算符成员函数。默认赋值运算符的工作方式是按位对拷,将等到右边对象的非静态成员... 阅读全文
posted @ 2014-05-10 11:39 LubinLew 阅读(9059) 评论(0) 推荐(0)
摘要:0、重载一元操作符的方法一元运算符即只需要一个操作用的运算符,如取地址运算符(&)、复数(-)、自减(--)、自加(++)等。运算符重载可以分为3种方式:类的非静态成员函数、类的友元函数、普通函数。例如有 1 个操作数 a,一元运算符?(表示一个一元运算符),a? 或者?a 的操作会被解释为下面2种... 阅读全文
posted @ 2014-05-09 13:52 LubinLew 阅读(4552) 评论(0) 推荐(2)
摘要:1、重载二元操作符的方法二元运算符又称为双目运算符,即需要2个操作数的运算符,例如 + - * / 等。运算符重载可以分为3种方式:类的非静态成员函数、类的友元函数、普通函数。例如有 2 个操作数 a 和 b,二元运算符 ? (表示一个二元运算符),a ? b 的操作会被解释为下面2种形式之一//a... 阅读全文
posted @ 2014-05-08 20:24 LubinLew 阅读(6208) 评论(0) 推荐(1)
摘要:0、序言名字空间是C++提供的一种解决符号名字冲突的方法。一个命令空间是一个作用域,在不同名字空间中命名相同的符号代表不同的实体。通常,利用定义名字空间的办法,可以使模块划分更加方便,减少模块间的相互影响。1、名字空间的成员定义在名字空间中的实体称为名字空间的成员。名字空间内的名字可以被该名字空间内... 阅读全文
posted @ 2014-05-08 13:25 LubinLew 阅读(7002) 评论(0) 推荐(2)
摘要:0、序言其实2者主要的区别就是iostream是C++标准的输入输出流头文件,而iostream.h是非标准的头文件。标准头文件iostream中的函数属于标准命令空间,而iostream.h中的函数都是全局函数。#include //这个就是C++98标准化以后的标准头文件#includ... 阅读全文
posted @ 2014-05-06 10:47 LubinLew 阅读(8403) 评论(0) 推荐(3)
摘要:No.关键字意义备注1auto声明自动变量 2break跳出当前循环 3caseswitch语句的分支 4char声明字符型变量 5const声明只读变量C90新增6continue结束当前次循环,进入下次循环 7defaultswitch语句的默认分支 8do循环语句的循环体 9double声明双精度型变量 10elseif语句的否定分支 11enum声明枚举类型C90新增12extren声明变量是在其他文件中定义 13float声明浮点型变量 14for一种循环语句 15goto无条件跳转语句 16if条件语句 17inline建议编译器做内联展开处理C99新增18int声明整型变量 19 阅读全文
posted @ 2014-03-31 17:14 LubinLew 阅读(443) 评论(0) 推荐(0)
摘要:1,K&R C1978年, Dennis Ritchie和Brian Wilson Kernighan合作出版了《The C Programming Language》的第一版。书中介绍的C语言标准也被C语言程序员称作“K&R C”,第二版的书中也包含了一些ANSI C的标准。英文版 :http://pan.baidu.com/s/1pJyNrGf中文版 :http://pan.baidu.com/s/1i3mOmPZ2, ANSI C(美国标准)、C891989年,C语言被 ANSI 标准化(ANSI X3.159-1989),也称为C89。3, C90、ISO C(世界标准 阅读全文
posted @ 2014-03-31 16:37 LubinLew 阅读(1098) 评论(0) 推荐(0)
摘要:优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右()圆括号(表达式)/函数名(形参表).成员选择(对象)对象.成员名->成员选择(指针)对象指针->成员名2-负号运算符-表达式右到左单目运算符(类型)强制类型转换(数据类型)表达式++自增运算符++变量名/变量名++单目运算符--自减运算符--变量名/变量名--单目运算符*取值运算符*指针变量单目运算符&取地址运算符&变量名单目运算符!逻辑非运算符!表达式单目运算符~按位取反运算符~表达式单目运算符sizeof长度运算符sizeof(表达式)3/除表达式/表达式左到右双目运算符*乘表 阅读全文
posted @ 2014-03-30 21:35 LubinLew 阅读(985) 评论(0) 推荐(0)
摘要:序一个编译过程包括下面4个阶段预处理,预处理器CPP主要进行3个方面:文件包含、宏定义、条件编译;编译,gcc将c文件编译成汇编文件;汇编,as将汇编文件编译成机器码;链接,ld将目标文件和外部符号进行链接,得到一个可执行二进制文件。下面以一个简单的test.c来探讨这个过程#define NUMB... 阅读全文
posted @ 2014-03-30 21:18 LubinLew 阅读(1119) 评论(0) 推荐(0)
摘要:C++中允许为函数提供默认参数,又名缺省参数。使用默认参数时的注意事项:① 有函数声明(原型)时,默认参数可以放在函数声明或者定义中,但只能放在二者之一double sqrt(double f = 1.0); //函数声明double sqrt(double f) //函数定义{ // ....... 阅读全文
posted @ 2014-03-25 15:46 LubinLew 阅读(26365) 评论(0) 推荐(4)