{returnthis->person;//返回person指针}//重载*Person&operator*() {return*this->person;//要返回的是person的本体 所以return * this->person}~smartPointer() { cout<<"析构了智能指针"<<endl;if(this->person !=NULL) {deletethis->person;//删除Person对象的指针this->person = NULL;//防止野指针}...
在这种情况下,重载<<运算符用于指向类的指针。 指向类的指针重载<<运算符的一个常见应用是在输出流中打印类的对象。这可以通过将指针传递给流的insertion运算符<<来实现。 例如,假设我们有一个名为Person的类,我们可以重载<<运算符,如下所示: 代码语言:cpp 复制 #include<iostream> class Person { public: ...
所以重载->可以实现类似智能指针的功能:包装了某个类以后,仍能无缝调用类里的方法。 比如unique_ptr,它就重载了-> 如下, /// Return the stored pointer.pointeroperator->()constnoexcept{_GLIBCXX_DEBUG_PEDASSERT(get()!=pointer());returnget();} 而当我们使用p->m的时候,实际上是访问了包装的类型的m。
cout<age<<endl;//b->age就相当于(b.operator->())->age,也就意味着->符号很特殊,重载之后,利用b->age这种调用方式,编译器会自动给它加一个->已达到指针变量调用的目的 cout<<(b.operator->())->age<<endl; system("pause"); }
智能指针的实现 Person类有showAge 成员函数 如果new出来的Person对象,就要让程序员自觉的去释放 delete 有了智能指针,让智能指针托管这个Person对象,对象的释放就不用操心了,让智能指针管理 为了让智能指针想普通的Person*指针一样使用 就要重载 -> 和*
classString{// 使用 全局函数 实现 左移运算符 << 重载// 将全局函数 声明为 String 的友元函数friend ostream&operator<<(ostream&out,String&s);} 二、自定义类使用技巧 1、直接访问类的私有指针成员 在开发中 , 自定义了一个 class 类 , 其中定义了 指针 类型的 成员变量 ; ...
c++ (运算符重载 && 智能指针) c++ (运算符重载 && 智能指针) class Person { public: Person(){} Person(int age):m_Age(age){} void showAge() { cout << "年龄为: " << this->m_Age; } int m_Age; ~Person() { cout << "析构调用了" << endl;...
概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型 4.5.1 加号运算符重载(+) 作用:实现两个自定义数据类型相加的运算 总结1:对于内置的数据类型表达式的运算符,是不可以能改变的 总结2:不要滥用运算符重载 4.5.2 左移运算符重载 作用:可以输出自定义数据类型 #include<iostream> //io...
简介:C++类和对象的细节原理:this指针、构造函数和析构函数、深浅拷贝、运算符重载、初始化列表、类的各种成员和方法 相关基础概念 OOP:面向对象编程。OOP语言的四大特征是抽象、封装/隐藏、继承、多态。 实体:比如人,一个人就是一个实体,比如表格,一张表格也可以是一个实体。
友元用于让一个函数或类访问另一个类的私有成员,通过friend关键字实现。友元有三种实现方式,包括全局函数、类作为友元和成员函数作为友元。运算符重载允许对已有的运算符赋予新的功能,以适应不同的数据类型。例如,加号运算符重载用于实现自定义数据类型相加,左移运算符重载配合友元实现输出自定义数据类型...