1、p539
关于什么时候需要将成员函数定义const和非const两个版本。习题14.23。
形参为const引用:首先,省去一次拷贝构造函数;然后,形参设为const,既可以传递const对象,又可以传递非const对象。
2、Page 531
同一模板的声明和定义中,形参的名字不必相同。
3、容器
容器可以用[]和.at()赋值。
//: c++代码测试(转)
// vector赋值, 证明是深度赋值
vector<int>v1;
vector<int>v2;
//v1赋值
cout << "v1赋值" << endl;
for(int i = 0; i < 5; i++){
v1.push_back(i);
}
//显示v1的元素
cout << "显示v1的元素" << endl;
vector<int>::iterator it1 = v1.begin();
for(; it1 != v1.end(); it1++){
cout << *it1 << " ";
}
cout << endl;
//将v1 copy 到 v2
cout << "将v1 copy 到 v2" << endl;
v2 = v1;
//显示v2的元素
cout << "显示v2的元素" << endl;
vector<int>::iterator it2 = v2.begin();
for(; it2 != v2.end(); it2++){
cout << *it2 << " ";
}
cout << endl;
//删除v1的元素
cout << "删除v1的元素" << endl;
v1.clear();
//显示v1的元素
cout << "显示v1的元素,看是否已经删除" << endl;
it1 = v1.begin();
for(; it1 != v1.end(); it1++){
cout << *it1 << " ";
}
cout << endl;
//显示v2的元素, 看删除v1的元素后是否影响v2
cout << "显示v2的元素, 看删除v1的元素后是否影响v2" << endl;
it2 = v2.begin();
for(; it2 != v2.end(); it2++){
cout << *it2 << " ";
}
深度赋值和浅度赋值
7、
在编写模板时,注意引入源文件。
8、 16.4.2
注意:什么叫做非类型形参。