C++中将对象this转换成unsigned char指针

示例程序


//  ---CodeBlob.h---
#ifndef CODEBLOB_H_
#define CODEBLOB_H_

class CodeBlob {
private:
  const char* _name;
  int        _size;

public:
    CodeBlob();
    void printName();
    void printSize();
    void setSize(int size);
    virtual ~CodeBlob();
};

#endif /* CODEBLOB_H_ */

//  ---CodeBlob.cpp---
#include <iostream>
#include "CodeBlob.h"

typedef unsigned char u_char;
typedef u_char*       address;

CodeBlob::CodeBlob() {
    _size = 5;
    _name = "hello";

}

CodeBlob::~CodeBlob() {
}

void CodeBlob::printName(){
  std::cout << _name << std::endl;
}

void CodeBlob::printSize(){
  std::cout << _size << std::endl;
  address aa = (address)this; // 这样写是没语法错误的
  std::cout << aa << std::endl;
}

void CodeBlob::setSize(int size){
    _size = size;
}

//  ---PointerConvert.cpp---

#include <iostream>
#include "CodeBlob.h"

int main(int argc, char **argv) {
    std::cout << "hello simon"<<std::endl;
    CodeBlob cb1;
    CodeBlob cb2;
    CodeBlob* cb3 = new CodeBlob();
    cb1.printName();
    cb1.setSize(100);
    cb1.printSize();
    cb2.printSize();
    cb3->setSize(20);
    cb3->printSize();
//  address a = (address)cb3;
//  std::cout << a <<std::endl;
    return 0;
}

此处是可以将对象this转换成unsigned char指针的。adress的值就是对象this的地址。

原文地址:https://www.cnblogs.com/simoncook/p/11141245.html

时间: 2024-10-02 10:18:27

C++中将对象this转换成unsigned char指针的相关文章

C语言 —— 打印不同对象的字节表示 ( 对int*强制转换成unsigned char*的理解 )

此文章参考<深入理解计算机系统>P31. 先看如下代码:  12345的十六进制表示为:0x00003039 1 #include <stdio.h> 2 3 int main() 4 { 5 int a = 12345; 6 char *q = (char *)(&a); 7 for(int i = 0; i < sizeof(a); ++i) 8 printf("%.2x ", q[i]); 9 return 0; 10 } 输出为: a的地址

Qt中将float转换成unsigned short类型

在用Qt开发应用程序时有时候需要将float类型转换为unsigned short类型的.如果进行强制类型转换,那么会出现精度损失的问题,使数据变得不正确.那么可以通过先将float类型的转换为QString类型的,QString sNum = QString::number(fNum);然后调用sNum.toUShort()函数就可以将float转换为unsigned short类型. 来自为知笔记(Wiz) Qt中将float转换成unsigned short类型,布布扣,bubuko.co

C++中将string类型变量转换成int型变量

需要的头文件:#include<sstream> 操作: string s1="124": int x; stringstream ss; ss<<s1; ss>>x; C++中将string类型变量转换成int型变量,布布扣,bubuko.com

php 对象强制转换成数组

$result=(array)$receive[0]; //对象强制转换成数组 foreach ($result as $key => $value) { $newresult[$key]=array((array)$value); } var_dump($newresult); exit();

如何在CAD编辑器中将CAD图纸转换成PDF文件,具体要怎么操作?

如何在CAD编辑器中将CAD图纸转换成PDF文件,具体要怎么操作?在平常的工作中,建筑设计师们借助CAD编辑器没编辑一张CAD图纸都需要进行查看,但是CAD图纸均为dwg格式的,这样不方便我们进行查看,很多时候就需要将CAD图纸转换成PDF文件,这样就方便我们查看了,但是如何在CAD编辑器中将CAD图纸转换成PDF文件,具体要怎么操作?有什么好的办法吗?下面小编就利用迅捷CAD编辑器标准版来教教大家具体操作方法,希望能够帮助到你们. 第一步:打开电脑,在电脑中打开一个能够进行搜索的浏览器,在浏览

数组强制转换成结构体指针,结构体内部指针的指向问题

如果直接操作结构体成员是不会取到不期望的值 但是对于要求连续数据格式的时候需要考虑对齐的问题 例如通讯中的数据帧格式等 ,如 ip数据包等#pragma   pack(1) struct   tagStruct {     ... } t; #pragma   pack() 的方式来强制连续存放 其中前面   pack(1)   是指对齐边界为   1 1.几个结构体例子: struct{short a1;short a2;short a3;}A; struct{long a1;short a2

Eclipse中将Java项目转换成Web项目的方法

前言: 用Eclipse开发项目的时候,把一个Web项目导入到Eclipse里会变成了一个java工程,将无法在Tomcat中进行部署运行. 方法: 1.找到.project文件,找到里面的<natures>标签,查看是否有下面的代码,没有则复制进去. Xml代码 <nature>org.eclipse.wst.common.project.facet.core.nature</nature> <nature>org.eclipse.wst.common.m

C#中的DataSet、string、DataTable 、对象转换成Json

C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// <summary> /// 过滤特殊字符 /// </summary> /// <param name="s">字符串</param> /// <returns>json字符串</returns> private s

C#中的DataSet、string、DataTable、对象转换成Json的实现代码

C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// <summary> /// 过滤特殊字符 /// </summary> /// <param name="s">字符串</param> /// <returns>json字符串</returns> private s