运算符重载
关于"<<“和”>>"的重载
<<
cpp std::ostream& operator<<(std::ostream&, const 类对象引用); //输出运算符<<重载
用实现string类来说明
class String
{
private:
char* m_name;
unsigned int m_size;
public:
String(const char* name)
{
m_size = strlen(name);
m_name = new char[m_size+1];
memcpy(m_name, name, m_size);
m_name[m_size] = 0;
}
friend std::ostream& operator<<(std::ostream& stream, const String& entity);
};
std::ostream& operator<<(std::ostream& stream, const String& entity) //重载了<<运算符
{
stream << entity.m_name;
return stream;
}
int main()
{
String entity="J Rice";
std::cout << entity;
}
深拷贝
在类中运用指针时我们得小心一件事:当你需要拷贝一个对象时指针本身会被拷贝
Entity e2(e1);
但不会拷贝指针指向的空间,也就是,p1与p2指向的是同一块空间!p2指向的不是属于自己类内的元素而是p1的.
class String
{
private:
char* m_name;
unsigned int m_size;
public:
String(const char* name)
{
m_size = strlen(name);
m_name = new char[m_size+1];
memcpy(m_name, name, m_size);
m_name[m_size] = 0;