Job Hunting 之 C++复习 (1)
2010-08-09 22:17
169 查看
找到好工作,生活才快乐。要开始找工作了,复习下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)
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++中如何进行变量初始化?
class MySum{ public: MySum(int a, int b); int getSum(void); int *ref; /* ref to a global value */ private: int sum; }; int main() { int a(12); /* 等价于a=12*/ MySum summer(1,2); /*无法采用直接赋值的方式,使用构造函数 */ MySum summer2 = summer; /* 隐式调用MySum::MySum(const MySum&)*/ } initobj.cpp: In function ‘int main()’: initobj.cpp:47: error: no matching function for call to ‘MySum::MySum()’ initobj.cpp:31: note: candidates are: MySum::MySum(int, int) initobj.cpp:23: note: MySum::MySum(const MySum&)
(3)class string的初始化方式有哪些?
(4)记忆<<, >>流操作符的方法
按照常规的口语顺序,“左右”,“读写”,顺序对应,左对应读,右对应写。
(5) C++中的=赋值背后的内涵
1. 简单赋值
2. 隐式自动调用copy constructor
3.
(6) C++中的==在不同情况下表示的含义
(7) vector的初始化
必须是已存在的元素才能用下标操作符进行索引。通过下标操作进行赋值时,不会添加任何元素。
#include <iostream> #include <vector> using namespace std; int main() { vector<int> seq(12); seq[11] = 11; cout << seq[11] <<endl; seq[9002] = 12; /* disaster! use seq.push_back() instead */ cout << seq[9789] <<endl; /* disaster! */ }
(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)
相关文章推荐
- C++复习 01 快速入门
- C/C++复习(5):结构体
- C/C++复习:统计票数
- C++基础知识复习--字符串
- 复习(数据结构):链表:c++:标准
- 笔试复习_C++_类(一)
- C++ 复习
- C++ 考试复习要点
- C++复习6.C/C++高级数据类型
- 数据结构复习笔记:C++程序设计(一)
- 面向对象程序设计-复习C++
- C++ 复习(三)
- C++面试资料之问答题集合(找工作复习)
- 经典排序算法c++实现,自己复习,不断更新
- 复习C++基础知识-----“我的第一本C++”读书笔记2
- 新分类:C++复习笔记
- C++复习第四天 命名空间
- c++基础复习之求平均值以及字符串输入输出
- c++复习笔记--c++语言程序设计题典
- c\c++复习基础要点12---容器vector