博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
31 C++ 基础—this 指针和复制构造函数
阅读量:4147 次
发布时间:2019-05-25

本文共 1477 字,大约阅读时间需要 4 分钟。

1. this 指针

this 指针是指向类对象的指针,

  1. 隐式使用this指针,编译器完成
#include "Student.h"#include 
string Student :: getName() { return name;}void Student ::setName(string vaule){ name = vaule;}
  1. 显式使用this指针
#include "Student.h"#include 
// 显示使用 this指针string Student :: getName() { return (*this).name;}void Student ::setName(string vaule){ this->name = vaule;}

2. 复制构造函数

复制构造函数是一种特殊的构造函数,在创建一个新的对象是将其他对象作为参数,编译器将会调用复制构造函数。不提供默认构造函数。默认构造函数的内部各个成员变量赋值。创建之后,新对象是老对象的副本,二者值相同,但是具有不同的存储空间。形式如 Student(Student& mStudent)

// 复制构造函数,注意是传递引用// 如果去除引用 Student::Student(Student mStudent){,则变成传递对象,// 此时对象会被创新创建,程序开销增多,// 这就是为什么我们使用复制构造函数的原因之一Student::Student(Student& mStudent){    name = mStudent.name;}

调用复制构造函数的时机

1. 以其他对象作为参数创建对象时

#include 
#include "Student.h"using namespace std;int main() { // 构造函数 Student mStudent("李白"); // 复制构造函数 Student mS(mStudent); cout<<"Name = "<
<
  1. 复制构造函数定义

Student.h

#ifndef STUDENT_H#define STUDENT_H#include 
#include
using namespace std;class Student {public: // 复制构造函数 Student(Student& mStudent); Student(string vaule); void setName(string vaule); string getName();private: string name;};#endif
  1. 复制构造函数实现
#include "Student.h"#include 
// 复制构造函数Student::Student(Student& mStudent){ name = mStudent.name;}// 构造函数Student::Student(string vaule){ name = vaule;}string Student :: getName() { return name;}void Student ::setName(string vaule){ name = vaule;}

转载地址:http://eecti.baihongyu.com/

你可能感兴趣的文章
Mac下SourceTree导出更新文件
查看>>
Git 企业中常用分支管理策略
查看>>
CRMEB v2.5.2常见错误修复办法
查看>>
微信公众号和微信小程序的区别
查看>>
数据类型分类
查看>>
对象和类~
查看>>
oracle数据库dblink连接
查看>>
解决静态static方法注入mapper无效问题
查看>>
bootstrap浮窗
查看>>
常用验证片段
查看>>
zTree的理解
查看>>
js after append
查看>>
sweetalert
查看>>
React.js 之筛选篇
查看>>
html5新标签dataList
查看>>
window.open()参数传递及获取
查看>>
nodejs静态服务器anywhere
查看>>
sessionStorage和localStorage
查看>>
解决smartGit过期问题
查看>>
angularjs毫秒转成化日期格式(date:'yyyy-MM-dd HH:mm:ss')
查看>>