zoukankan      html  css  js  c++  java
  • 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的地址。

  • 相关阅读:
    【接口平台】上报接口处理时间
    【性能测试】吞吐量上不去的问题
    vue层级选择器多选
    打家劫舍 II
    打家劫舍
    房屋染色 II
    距离顺序排列矩阵单元格
    根据身高重建队列
    将 x 减到 0 的最小操作数
    确定两个字符串是否接近
  • 原文地址:https://www.cnblogs.com/simoncook/p/11141245.html
Copyright © 2011-2022 走看看