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

  • 相关阅读:
    Redis(八)理解内存
    Redis(七)Redis的噩梦:阻塞
    Redis(六)复制
    Redis(五)持久化
    笔试面试经典问题
    两个栈实现一个队列
    单链表相关操作
    我的笔记本
    10进制正整数转4位定长的36进制字符串
    微软2016校园招聘在线笔试之Magic Box
  • 原文地址:https://www.cnblogs.com/simoncook/p/11141245.html
Copyright © 2011-2022 走看看