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

  • 相关阅读:
    SprimgMVC学习笔记(五)—— Controller方法返回值
    SprimgMVC学习笔记(四)—— @RequestMapping
    SprimgMVC学习笔记(三)—— 参数绑定
    SprimgMVC学习笔记(二)—— 整合Mybatis
    SprimgMVC学习笔记(一)—— SpringMVC入门
    mysql
    进程与线程
    xml
    生成器
    并发多线程
  • 原文地址:https://www.cnblogs.com/simoncook/p/11141245.html
Copyright © 2011-2022 走看看