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的地址。

  • 相关阅读:
    用php爬取网页
    无论我是一只菜鸟笨鸟
    有线网卡与无线网卡同时使用
    scapy 命令理解
    Wireshark Filter
    python OS/pdb 模块及数据类型基础
    scapy down and install
    python 字符操作函数
    python 类型集
    python 科学计算
  • 原文地址:https://www.cnblogs.com/simoncook/p/11141245.html
Copyright © 2011-2022 走看看