找到好工作,生活才快乐。要开始找工作了,复习下C++。
Book: Essential C++
(1)不加using namespace std;的后果是什么?
basicio.cpp:24: error: ‘string’ was not declared in this scope
basicio.cpp:26: error: ‘cout’ was not declared in this scope
basicio.cpp:26: error: ‘endl’ was not declared in this scope
(2)C++中如何进行变量初始化?
(3)class string的初始化方式有哪些?
(4)记忆<<, >>流操作符的方法
按照常规的口语顺序,“左右”,“读写”,顺序对应,左对应读,右对应写。
(5) C++中的=赋值背后的内涵
1. 简单赋值
2. 隐式自动调用copy constructor
3.
(6) C++中的==在不同情况下表示的含义
(7) vector的初始化
(8) const二三事
// 语法上没有任何问题,但是const修饰符的目的是说成员变量在val()函数内不可以修改,那么一般来说,val()返回的_val也不应该能够被修改。由于函数前没有const修饰,所以_val实际上向外部开放了。
MyClass & val() const
{
return _val;
}
// 正确的写法:
const MyClass & val() const
{
return _val;
}
// 最完美的定义方法:
class val_class{
const MyClass & val() const {return _val;}
MyClass &val(){ return _val; }
};
void sample(const val_class *pbc, val_class &rbc)
{
pbc->val(); // 调用const版
rbc.val(); //调用non-const版
}
利用mutable修饰符,可以突破const的不可修改限制。例如mutable int _next;
(9)后置++重载的特殊性
为了和前置++加以区别,后置++的重载声明就行了一些变通,参数表中加入了一个冗余的int,实属特例:
inline MyObject & operator++(int){}
(10)