class Person
{
public:
Person();
~Person();
private:
std::string name;
std::string address;
};
class student: public Person
{
public:
student();
~student();
private:
std::string stuName;
std::string stuAddress;
};
bool IsValidStudent(student s)
{
return true;
}
调用过程:
student s;
IsValidStudent(s);
如上使用的代码,存在的效率问题:
1. 以值传递会调用student的拷贝构造函数生成对象,并且调用person的拷贝构造函数
2. 函数结束的时候会增加调用一次student的析构函数以及person的析构函数
3. 除此之外会调用四次std::string的拷贝构造函数以及析构函数
这些都是效率问题,使用常引用传递可以大大提高程序的性能。