随笔分类 - c++
摘要:构造、析构、赋值运算c++会为一个空类声明一个copy构造函数,一个copy assignment操作符和一个析构函数如果没有声明构造函数,还会生成一个default构造函数示例代码如下:class Empty{...};等同于class Empty{//default构造函数Empty(){...}//copy构造函数Empty(const Empty& rhs){...}//析构函数 non-virtual~Empty(){...}//copy assignment操作符Empty& operator=(const Empty& rhs){...}};编译器会产生出
阅读全文
摘要:c with classes尽量以const enum inline 替换#define示例代码:#define ASPECT_RATIO 1.653 //不进入记号表(symbol table)替换为const AspectRatio 1.653 //进入记号表定义常量字符串const std::string authorName("retacn");class专属常量示例代码如下:class GamePlayer{private:static const int NumTurns=5;int scores[NumTurns];...};the enum hack替换de
阅读全文
摘要:虚函数和多态性 使用基类指针,示例代码如下(从Box派生两个类) class Carton:public Box{ }; class ToughPack:public Box{ }; Carton aCarton(10.0,10.0,5.0); Box * pBox=& aCarton; ToughPack hardcase(12.0,8.0,4.0); pBox=&hardcase; 有如下语句:pBox()->volume; 此时如pBox包含的是Carton的对象地址,那么它指向的就是Carton对象的函数,同理...
阅读全文
摘要:继承 1 类和面向对象编程 2 类的继承 继承和聚合 从基类中派生新类 头文件 Box.h示例代码如下: #ifndef BOX_H #define BOX_H class Box{ //构造器 public:Box(double lv=1.0,double wv=1.0,double hv=1.0); private: double length; double width; double height; }; #endif 实现文件Box.cpp如下: #include "box.h" Box:...
阅读全文
摘要:运算符重载 1 为自已的类实现运算符 运算符重载 运算符重载允许把标准运算符(+-*/等)应用于定制数据类型的对像, 即编写一个函数,重新定义每个运算符,使之每次应用于类的对象时,就执行 指定的操作 示例代码如下(如果重新定义<运算符): orerator<(); 注:如果是字母运算符,要在关键字和运算符之间有一个空格 可以重载的运算符 不允许发明新运算符,不能修改优先级和操作个数 不能重载的运算符==========================================...
阅读全文
摘要:类的操作 1 类对象使用指针的三种情况: 一、使用指针成员访问运算符-> ,来调用函数 二、作为函数的参数 三、作为类的数据成员' 2 指针作为数据成员 示例代码如下: package类 包含两个数据成员一个是Box类,一个是指向package的指针 class Package{ //constructor 构造器 public : Package(Box* pBox) : theBox(*pBox),pNext(0){} //get 方法 Box getBox()...
阅读全文
摘要:类 1 封装 继承 多态 2 类的定义: class Box{//定义常量 public: double length; double width; double height; //方法 double value(){ return length*width*height; } } 3 构造函数 示例代码如下: class Box{//定义常量 public: double length; double width; double height;//con...
阅读全文
摘要:创建自已的数据类型 1 对像的概念 2 c++中的结构 定义结构类型 格式如下: struct Book{char title[80];char author[80]; char publisher[80]; int year; }; 声明结构类型的变量 struct Book paperback; 创建结构类型的对像(数组类似) Book novel={ "thinking in java", "yuezhenhua", "xinhua"; 2012 ...
阅读全文
摘要:程序文件和预处理指令 1 程序文件 头文件:类型定义和其他用于程序中一个或多个源文件的代码 后缀名为:.h 源文件:要编译成机器指令的代码 后缀名为:.cpp .c .cxx 引入头文件 代码格式如下: #include<iostream> 名称的作用域 程序文件的连链接 确定名称的链接属性 内部链接属性 可以在同一个转换单元的任何地方访问 外部链接属性 同上,还可以在别外一个转换单元中访问 没有链接属性 只能在该名称的作用域中访问 外部名称 如果想访问当前转换单元外部的变量,代码...
阅读全文
摘要:函数 1 函数的重载: 函数名相同,参数个数不同 参数个数相同,参数类型不同 函数的签名 重载和指针参数 例如:int temp(int * pnum1,int * pnum2); int temp(long * pnum1,long * pnum2); 重载和引用参数 重载和const参数 2 函数模板 一个简章的函数模版 template<class T> T larger(T a, T b){ //函数体} 创建模版的实例 larger(1.5,2.5); 显示指定模板参数板 larger<long>(num1,num2)...
阅读全文
摘要:使用函数编程 程序的分解 1 函数 定义函数 函数头格式:返回类型 函数名(参数列表) 参数和变元 返回值 return 2 函数的声明 函数的原型 函数的参数传递 按值传送 给函数传送指针 给函数传递数组 常量指针参数 多维数组参数 按引用传送机制 例如:int num=10; int &rnum=num; main的参数 一般格式如下:int main(int argc,char * argv...
阅读全文
摘要:指针 可以使用指针记号操作存储在数组中的数据 可以在函数中访问函数外部的大块数据 动态为新变量分配空间 1 指针的声明: long * pnumber; 2 地址运算符: & 例如:long number=1234L; long * pnumber; pnumber=&number; 3 间接运算符: * 4 指针的初始化 : 可以用变量地址初始化指针,代码如下: int number=10; int * pnumber=&number; 还可以int * pnumber=0; 5 把指针初始化为char类型 可以用字...
阅读全文
摘要:while do-while for循环 循环和变时作用域 跳过循环迭代: continue; 循环的中断 : break;第六章 数组和字符串 1 数组的定义 double tempertures[366]; 避免幻数:可以声明一下数组的大小 初始化数组: int sample[]={2,3,4,5,6}; 初始化数组的大小: int sample[5]={2,3,4,5,6}; 取得数组所占用的字节数 : sizeof 数组名 字符数组: char values={'a','b','c','d'}; 自动在数组末尾添加'
阅读全文
摘要:选择和决策 比较数据值 1 关系运算符:< > == <= >= != 2 if语句 嵌套的if语句 不依赖编码的字符处理: 包含<cctype>头文件 3 if-else语句 嵌套的if-else语句 4 逻辑运算符 && 与 全真为真 || 或 全假为假 ! 非 5 条件运算符 逻辑表达式?表达式一:表达式二 6 switch语句 7 无条件分支 goto语句 例如:MyLable: x=1; goto MyLabel; 8 决策语句块和变量作用域
阅读全文
摘要:处理基本数据类型 1 混合表达式 (向上转型) 2 赋值和不同类型 类型1=类型2 尽量避免高类型向低类型转换 3 显示强制转换 static_cast<转换后的类型>{表达式} 老式的强制转换(转换后的类型)表达式 4 确定类型 sizeof();返回一个整数(size_t 就是unsigned int) 5 确定数值的上下限 显示double类型的变量中的最大值,代码如下: std:numeric.limits<double>::max(); 同理max换成mai取得最小值 6 按位运算 移位运算符 <<左移 >>右移 位模式下的逻辑运算 枚
阅读全文
摘要:基本概念第一个程序 helloword/*标准头文件*/#include<iostream>using namespace std;int main(){cout<<"helloworld!\n";return 0;}1 名称c++中可以命名的五种元素 函数 变量 类型 标签 命名空间注:名称不能以数字开头,中间不能有空白字符 包含两个下划线的名称,以一个下划线开头后跟一个大写字母,是标准库的保留字 名称中允许含有16进制字符\Udddd,d表示16进制数2 命名空间using namespace std;cout的全名就是:std::cout //
阅读全文
浙公网安备 33010602011771号