c++令本人困扰的地方
2016-03-16 18:39
309 查看
1.sort
对于vector可以直接用,list却必须传递cmp比较函数2.iterator
模板中,(template<typename T>)
vector::iterator itera;
似乎只能在while循环体内进行迭代器自增,不能在for括号内进行迭代器自增
例如:
vector<int> the_vector; vector<int>::iterator the_iterator; for( int i=0; i < 10; i++ ) the_vector.push_back(i); int total = 0; the_iterator = the_vector.begin(); while( the_iterator != the_vector.end() ) { total += *the_iterator; the_iterator++; } cout << "Total=" << total << endl;
但是特别的要说明的是,当类型变量(T)作为参数导出iterator时(vectot::iterator)*,为了编译通过
需要
typename vector<T>::iterator itera;
此时迭代器itera可以在for,while循环里使用
template <typename T> void vector_print(vector<T>v){ typename vector<T>::iterator itera; for(itera=v.begin();itera!=v.end();++itera){ cout<<*itera<<" "; } }
3.有默认参数的函数
带默认参数的函数声明时注明默认参数即可,当声明与定义分离时,不能在定义中再指定一个默认值(即使与声明的是同一个值)
4.EOF
cstdio也即stdio.h才有这个宏定义
5.const
函数名后加constbool Stack:: isempty()const;//声明 bool Stack:: isempty()const{}//定义
事实上,在函数名后加const只会出现在类的方法定义上,表明这个方法成员不可变,
又因为this是隐藏的第一个参数,所以实质要求是方法不能修改实例的属性isempty、isfull
front、back等都可以后面加const预防意外修改实例属性。
6.模板定义应该与声明放在同一个头文件里
对于某些实现了export关键字的编译器可以分开放、头文件放声明,export模板定义单独放在一个源文件里,包含头文件。(反正gcc、vs都没有实现,)
7.类初始化中的单引号
本条援引 /article/8938499.html初始化的顺序与成员变量声名的顺序相同。
先看一下下面的程序:
myClass::myClass():b(1),a(b)
{
}
这样的执行结果a,b各是多少呢?b=1,a=1?不是,b=1而a是个随机数。这一点是相当重要的哦,一般在初始化列表中进行初始化时,初始化的顺序应与声明的顺序保持一致,防止出现不必要的错误。
3)对于继承的类来说,在初始化列表中也可以进行基类的初始化,初始化的顺序是先基类初始化,然后再根据该类自己的变量的声明
为什么呢,因为:
myClass::myClass()
{
a = 1;// 没错,效果相当于在初始化列表中进行初始化
b = 1;// 出错,const变量不能进行赋值操作;
}
8.静态(static)成员初始化
参见这篇博文:/article/5674687.html
9.明明直觉上同Java那么像,但创建对象的思路迥异!!
C++ 对象只要声明变量, 就算创建, 但是要考虑栈上的对象与堆上的对象的不同, 栈对象会回收堆对象需要 new 与 delete ……
总之C++就是四不像
10. C++多态性是通过虚函数来实现的
相关文章推荐
- 深入理解C++中的explicitkeyword
- (C++)多重继承
- C++ 学习之路(7):共享数据的保护
- C++内存泄露
- 友元函数
- 单片机LED灯(1)
- C语言求1+2!+3!+...+20!
- 详谈C++游戏程序员发展前景
- c++实现顺序表
- C++之继承与派生(2)
- C++扬帆远航——6(三色球)
- C++设计模式编程中简单工厂与工厂方法模式的实例对比
- 给sublime3配置C++(编译,运行,和格式化代码)
- Java程序猿学习C++之字符串
- 替换字符串 c++
- C++扬帆远航——5(换分币)
- 【C++探索之旅】第一部分第十三课:第一部分小测验
- 【C++探索之旅】第一部分第十三课:第一部分小测验
- iOSDay09C语言函数指针
- 【C++探索之旅】第一部分第十二课:指针一出,谁与争锋