#学习自用#
三元运算符
三元运算符就是分号和问号,可以简化条件语句的书写。
#include<iostream>
using namespace std;
void main()
{
int i;
cin>>i;
cin.get();
if(i>10)
cout<<"level"<<i<<endl;
else if(i>5)
cout<<"lev"<<i<<endl;
else
cout<<"l"<<i<<endl;
i>5?i>10?cout<<"level"<<i<<endl:cout<<"lev"<<i<<endl:cout<<"l"<<i<<endl;
cin.get();
}
下面这个三元运算符的嵌套与上面的if-elseif的功能相同。
NEW
new的主要目的是在堆上分配连续的内存块,延长变量的生命周期,但是相比在栈上创建的变量会更慢。其返回值是指向该分配的内存块的指针。
class player
{
private:
string s;
int a;
public:
player():s("name")
{
cout<<s<<endl;
}
};
void main()
{
cout<<sizeof(string)<<endl;
cout<<sizeof(player)<<endl;
int* b=new int[20];
player* p=new player;
player* e=(player*)malloc(sizeof(player));
delete p;
delete[] b;
free(e);
cin.get();
}
这里做一些讨论:1)string类的大小为32字节,int类型4字节,player类36字节,可知其中的默认构造函数不占内存。2)new与malloc的用法类似,但是malloc只是为e开创了36字节的内存空间并返回地址,new不仅开辟空间还调用了默认构造函数。3)用了new之后要记得使用delete去删除堆上分配的内存空间,否则会造成内存泄漏。4)new int[20]是创建了80字节的整型数组空间,在删除的时候比较特殊delete[] 变量名。