成员变量为本类类型
小于 1 分钟cpp
概述
c++ 不同于 java ,后者的成员变量可以是本类类型,而前者则不可以,如果要实现相同的效果前者的成员变量要使用本类类型的指针
案例
头文件
#pragma once
#ifndef ADDR_H
#define ADDR_H
#include <iostream>
#include <Windows.h>
using namespace std;
class Addr
{
private:
UINT_PTR addr;
Addr* child;
public:
Addr(UINT_PTR a);
void setAddr(UINT_PTR a);
UINT_PTR getAddr();
void setChild(Addr* a);
Addr* getChild();
string toString();
};
#endif
cpp文件
#include "Addr.h"
#include<sstream>
using namespace std;
// 构造函数
Addr::Addr(UINT_PTR a):addr(a) {}
void Addr::setAddr(UINT_PTR a) {
addr = addr;
}
UINT_PTR Addr::getAddr() {
return addr;
}
void Addr::setChild(Addr* a) {
child = a;
}
Addr* Addr::getChild() {
return child;
}
string Addr::toString() {
return "addr:"+std::to_string(addr);
}
成员变量的 getter 和 setter 都采用类类型指针的方式,使用该类的方法如下:
void initAddr() {
Addr* baseAddrP = new Addr(BASE_ADDR);
Addr* offset1P = new Addr(OFFSET01);
Addr* offset2P = new Addr(OFFSET02);
offset1P->setChild(offset2P);
baseAddrP->setChild(offset1P);
cout << "已初始化基址和偏移,十进制基址是:" << baseAddrP->toString() << endl;
}
即通过 new 创建对象后返回的是对象的指针而不像 java 返回的是对象
