学习C++遇到的一些问题
1.
BookStack bookHouse;
FoodStack foodHouse;
CDStack CDHouse;
Stack warehouse[] = {bookHouse, foodHouse, CDHouse}; // 数组怎么存了不同类型?
for(i=0; i<3; i++)
warehouse[i].Pop();
2.泛型编程是一种基于发现高效算法的最抽象表示的编程方法。也就是说,以算法为起点并寻找能使其工作且有效率工作的最一般的必要条件集。(看不同,谁能通俗的举个例子?)谢谢
令人惊讶的是,很多不同的算法都需要相同的必要条件集,并且这些必要条件有多种不同的实现方式。类似的事实在数学里也可以看到。大多数不同的定理都依赖于同一套公理,并且对于同样的公理存在多种不同的模型。抽象机制!(数学里也可以看到,举例?)谢谢
3.我看到很多的地方用到const,我也知道const怎么用,用在哪里,但我真的不知道什么时候用const,很多时候觉得用不用const无所谓,我想可能是因为我没有做过大的程序所以看不到const到底重要在哪里,比如int ListLength(void)const { return List;} 很明显我不会修改私有成员List.........但还是加了const,我头脑里没个原则或者指南,还请大家指教,提供一个一般性的指导守则,比如什么时候最好用上const,什么时候不用用。谢谢
4.template <class T>
T LinearList<T>::GetElem(int i)
{
if (i>=0 && i<Last)
return data[i];
else
return NULL;
}
return (i<0 || i>=Last) ? NULL:data[i];
if...else 和 条件运算符 ? : 有没有说用谁比较好(在都可以用的情况下)?
NULL我知道是空的意思,但NULL到底是什么,居然可以以T类型返回?
5.
在类的构造函数中总是使用初始化列表的方式对类成员进行初始化。例如
TMyClass::TMyClass(const TData &data) : m_Data(data)
{
}
比
TMyClass::TMyClass(const TData &data)
{
m_Data = data;
}
要好。
不使用参数华列表的话,变量的默认构造函数就会在上述的这个构造函数之前被偷偷的
调用,然后才会进行赋值操作。如果用了参数话列表的形式的话,只有复制构造函数被
调用。(为什么要调用拷贝构造函数?)
6.
d:\c++\experiment\linearlist.h(83) : error C2244: 'LinearList<T>::InsertElem' : unable to resolve function overload
d:\c++\experiment\linearlist.h(85) : error C2954: template definitions cannot nest
意思?
7.
template <class T>
const int defaultSize = 10;
class LinearList
{
private:
T* data;
int MaxSize;
int Last;
public:
LinearList(int MaxSize = defaultSize);
...
};
d:\c++\experiment\linearlist.h(2) : error C2734: 'defaultSize' : const object must be initialized if not extern
什么意思?
8.
cerr
cerr与cout的主要区分就是,cout输出的信息可以重定向,而cerr只能输出到标准输出(显示器)上。
cerr不能重定向,只能输出到显示器,不经过缓冲区。(不经过缓冲区和经过有什么实际的影响?)
谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢