1.自增,自减操作符
int i=0,j;
j=++i;//i=1,j=1
j=i++;//i=2,j=1
前置操作返回的是加1后的值,,后置操作返回的是原值。要先保存操作数原来的值,以便返回未加1之前的值作为操作的结果。先加1,返回原值。
2.箭头操作符:为包含点操作符和解引用操作符的表达式一个同义词,用于获取类类型的成员
(*p).foo;
p->foo;
3.
t5_18:定义一个string指针的vector,输入内容,然后输出
vector<string *> vec;
string str;
cout << "enter strings:" ;
while (cin >> str) {
string *pstr = new string; // 必须新分配一块地方
// string *pstr = &str;不对,指向同一空间啦
*pstr = str; // 每个指针单独指向一块空间,赋值
vec.push_back(pstr);
if(vec.size()==4) cout <<"vec[1]:" << *vec[1] << endl;
}
for (vector<string *>::iterator it =vec.begin(); it != vec.end(); ++it) {
cout <<**it << ", len: " << (**it).size()<< endl;
}
4.sizeof操作符:返回一个对象或者类型名的长度,返回的类型为size_t单位字节
sizeof (expr)
sizeof (type name) // 必须加括号
sizeof expr : 并没有计算表达式的值
Sales_item item, *p;
sizeof item;
sizeof *p; // 并没有解引用操作, p指向一块没有意义 的地址
sizeof (Sales_item)
5.const对象的动态分配和回收:
const int *pci=new const int(1024);
delete pci
6.强制类型转换:
一般形式
cast-name<type>(expression)
(1).dynamic_cast:支持运行时识别指针或者引用所指的对象。
(2).const_cast:转换掉表达式的const性质
(3).static_cast:编译器任何隐式执行的类型转换都可以用此来显示完成
(4).reinterpret_cast:为操作数的位模式提供较低层次的重新解释,依赖于机器,要阅读编译器细节