1、成员变量包含了const和引用
e.g
template<class T>
class NamedObject
{
public:
NamedObject(std::string& Name, const T& value):
nameValue(Name),objectValue(value){}
private:
std::string& nameValue;
const T objectValue;
};
std::string newDog("Persphone");
std::string oldDog("Satch");
NamedObject<int> p(newDog, 2);
NamedObject<int> s(oldDog, 36);
//p = s;
说明:
注释部分的语句是不合法的,因为“C++不允许对引用进行重新赋予不同的对象”,此时编译器拒绝编译这一行语句。
2、如果某个基类将“operator=”声明为private,则编译器拒绝为其衍生类生成一个默认的“=”,因为衍生类的“=”需要处理成员的基类部分,这样必须调用基类的“=”,而基类的“=”属于private,无法调用,所以编译器无能为力。