给c++跪了.cpp
来源:互联网 发布:网络摄像机厂家 编辑:程序博客网 时间:2024/05/02 16:26
#if 0#include <iostream>#include <iomanip>#include <string>#include <stdio.h>using namespace std;2.2cout控制输出长度.格式: cout<<setw(8)<<a<<endl; //setw()在头文件<iomanip>中,只能右对齐,等价%8d cout<<setiosflags(ios::left)<<setw(8)<<a<<endl;//这样为左对齐 cout<<setw(8)<<setprecision(2)<<setiosflags(ios::fixed)<<b<<endl;//b是一个浮点数,等价于%8.2f cout<<setfill('x')<<set(8)<<a<<endl;//将空白用x填充 cout<<hex<<a<<endl;//等价于printf("%x\n",a);十六进制 cout<<oct<<a<<endl;//等价于printf("%o\n",a);八进制 cout<<a<<endl;//等价于printf("%d\n",a);十进制//做一个时钟2.3函数重载(静多态) //匹配原则 1.严格匹配 2.隐式转换(小到大可以,大到小不可以)寻求匹配,找到则匹配 3.返回值不构成重载 extern "C"{}//语句,将括号内按c的方式编译,不与其他同名函数重载。c库每一个头文件都有 : //--------------------------------------------------------- #ifdef __cplusplus//如果是c++编译器 extern "c"{ #endif // __cplusplus #ifdef __cplusplus } #endif //表示不使用c++的重载特性 //----------------------------------------------------------2.4运算符重载(Operator Overload) //运算符其实就是函数 struct zuobiao //坐标 { int x;int y; }; zuobiao operator + (zuobiao a,zuobiao b) { zuobiao c; c.x=a.x+b.x; c.y=a.y+b.y; return c; }2.5默认参数(Default Parameters) //参数只能从右往左默认,中间不能跳跃2.6引用(Raference) //&前为类型名时为引用,其他均为取地址 //变量名,本身是一段内存的引用,即别名(alias)。此处引入的引用是为已有变量起一个别名,声明如下 int a; int &ra=a; //1引用是一种声明关系,必须初始化,引用不开辟空间 //2此种声明关系一经声明 不可变更 int &rr=ra; //3可以对引用,再次引用。多次引用的结果,多个引用指向同一个变量 //引用的本质是对指针的包装,指针可以有引用,但不应该有引用的指针 //应用 不开辟内存空间 swarp(int &ra,int &rb)//^异或运算符 交换两个参数的值 { ra^=rb; rb^=ra; ra^=rb; } //const int&ra=a; 能用const就用;use const whatever possible //思考:引用的本质是什么? int & ra = a; int * const p = &a; 引用的本质是不可以修改指向的指针;2.7NewDelete(申请动态内存) int *p = new int(200); //开一个int类型单变量并初始化为200 int *ps = new string("hellwo world");//开一个string类型单变量并初始化为 hellow world int *p1 = new int[5]{0};//开一个int数组 每一项初始化为0; int **pp = new int*[5];//指针数组,存放的指针 int (*p)[4] = new int[3][4] {{0}};//p是一个指针 它指向包含4个int元素的一维数组 p为首地址 记不住怎么写编译器可以给你提示 //也可以new一个结构体 但初始化应用 {} 因为可能有有多个值 /*应用程序在内存中分为 代码区、 全局(静态)数据存储区、 栈区、 堆区。 通过new出来的内存在堆区。 局部变量,函数参数等存在栈区*/ int *p = new int ; delete p; int *p=new int[5]; delete []p; int (*p)[4][3]=new int[5][4][3]; delete []p; //异常处理 new很少出错 一般别用 int *p = new(std::nothrow) int ; if(p == nullptr){return -1}//NULL 好像变成nullptr了c++112.8内联函数(Inline Function) inline int sqr(int i) { return i*i; }//inline 是给编译器的一种建议,编译器来决定是否inline,但你不说编译器一定不inline 66666 //适用环境 函数体很小 且 频繁使用2.9Cast c++中的强制类型转换 int a=5; float b=6.5; static_cast //对于隐式类型可以转化的,可用这个 b=static_cast<float>(a); //作者不想让你强转,所以搞这么麻烦 哈啊哈 void *p;int *q; p=q;//可以 q=p;//不可以 q=static_cast<int*>(p);OK dynamic_cast reinterpret_cast //对于无隐式类型的转化,static_cast无效,例如将int赋值给int*指针 reinterpert重新解释 const_cast //脱常 只能用于指针和引用 void fun1(int & v) { cout<<v<<endl; } int main() { const int a; fun1(a); //这是传不进去的 fun1(const_cast<int &>(a));//这样就传进去了 不要妄图用这个方法修改const 其行为是未定义的且没有意义 return 0; }2.10 Const #define N 200 //宏,在预处理阶段发生了替换 const int n = 200; //在编译阶段发生了替换 //所以const永远不会发生改变#endif//该看day2.8//测试#include <iostream>#include <stdio.h>#include <math.h>using namespace std;struct zuobiao //坐标 { int x;int y; }; zuobiao operator + (zuobiao a,zuobiao b) { zuobiao c; c.x=a.x+b.x; c.y=a.y+b.y; return c; }int main(){ zuobiao *p = new zuobiao{1,2}; cout<<p->x<<" "<<p->y<<endl; cout<<(*p).x<<" "<<(*p).y<<endl;}
阅读全文
0 0
- 给c++跪了.cpp
- c语言给了我什么?
- 看了这篇博客我才知道我好像不太懂C和Cpp
- [C++]PSAPIDEM.CPP
- c&cpp常见问题
- .c .cpp区别
- C Cpp IDE
- .c .cpp .h
- C 还是 CPP
- Android C/CPP log
- Android C/CPP log
- mm.cpp/c/pas
- set.cpp/c/pas
- c/cpp混合编译
- mac c cpp
- cpp 调 c 函数
- 神奇的C&CPP
- mixing-c-and-cpp
- struts2 --- 拦截器
- 中企动力小程序开发服务上市,4大核心功能支持全行业
- 对动态规划DP的深入理解
- Java并发编程规则:判定对象是否存在多线程访问
- 【二进制分组+AC自动机】HDU4787[GRE Words Revenge]题解
- 给c++跪了.cpp
- 【IDEA Intel 输入法】Android Studio ,和 PhpStorm ,修复中文输入法,运用了两套 jre64 工具来解决。
- shell脚本-复制root目录下所有目录到tmp/下
- Centos搭建持续集成(六)----安装Maven以及nexus3私服
- Android 绘制顺序
- 【重装ubuntu16.04】一些细节
- centos 安装 grpc
- 免费GIS数据下载网站推荐
- 基本特新