C++在非面向对象方面的一些特性
一、标准输出流和标准输入流:
cin>>x>>y; sort(x,y); cout<<"x= "<<x<<"y= "<<y<<endl;
- 输出格式符hex、dec、oct分别对应16进制、10进制、8进制
#include<iostream> using namespace std; int main(){ int x=25; cout<<hex<<x<<endl; cout<<dec<<x<<endl; cout<<oct<<x<<endl; }
- 用setw()来控制域宽,头文件为<iomanip>
#include<iostream> #include<iomanip> using namespace std; int main(){ int x=25; cout<<setw(6)<<x<<endl; }
二、灵活的局部变量说明:
- c++允许在代码块中的任何地方说明局部变量
#include <iostream> #include <iomanip> using namespace std; int main() { for (int i = 0; i < 5; i++) { cout << i; //只可在for循环中使用 } }
三、结构、联合和枚举名可直接作为类型名:
#include <iostream> #include <iomanip> using namespace std; int main() { struct student{ int id; char name; }; student s1; }
四、const修饰符------常数说明:
- const 类型 标识符 =常数
#include <iostream> #include <iomanip> using namespace std; const int size=30; int main() { }
- const 类型 * 标识符(标识符声明为一个指针,它所指向的值为常量)
- 类型 * const 标识符(将该类型声明为一个指针常量)
五、内联函数:
- 通过inline声明,编译器在编译的时候首先在调用出使用函数体本身的语句替换掉函数调用语句,然后进行编译。这样就不需要进行函数跳转,效率会高一些。(优点)
#include <iostream> #include <iomanip> using namespace std; // const int size=30; inline int min(int x,int y){ return x<y?x:y; }
六、带有缺省参数的函数:
- C++在说明函数原型的时候,可以为一个或多个参数指定缺省值
#include <iostream> #include <iomanip> using namespace std; // const int size=30; inline int min(int x=5,int y=3){ return x<y?x:y; } int main() { cout<<min(); }
七、重载函数 reload:
#include<bits/stdc++.h> using namespace std; int sroot(int a){ return sqrt(a); } long long sroot(long long a){ return sqrt(a); } double sroot(double a){ return sqrt(a); } int main(){ int x; long long y; double z; cin>>x>>y>>z; cout<<"sqrt(i)= "<<sroot(x)<<' '; cout<<"sqrt(l)= "<<sroot(y)<<' '; cout<<"sqrt(d)= "<<sroot(z)<<' '; }
八、作用域运算符:
- 当以::变量使用时,C++允许使用外部命名的变量,且只适用于任何一个函数之外的全程变量。
- 还可以用来说明类外定义的成员函数是属于哪一个类。
#include <iostream> #include <iomanip> // const int size=30; inline int min(int x=5,int y=3){ return x<y?x:y; } int main() { for(int i=0;i<20;i++){ std::cout<<i; } }
#include <iostream> #include <iomanip> // const int size=30; inline int min(int x=5,int y=3){ return x<y?x:y; } using namespace std; int i; int main() { i=100;cout<<i<<endl; int i; for(i=0;i<=1;i++){ cout<<i<<endl; cout<<::i++<<endl; cout<<::i<<endl; } }
十、强制类型转换:
#include <iostream> #include <iomanip> using namespace std; int main() { int i=10; float x=(float) i; cout<<x; i=float (i); }
十一、自由存储操作符new和delete:
#include <iostream> #include <iomanip> using namespace std; int main() { int *p; p=new int (5); p[0]=5; for(int i=0;i<2;i++){ cout<<p[i]; } delete p; }
十二、引用:
- 数据类型 & 标识符=变量名;
- 标识符作为变量命的别名。
- 引用的主要作用是函数的参数传递