码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-07-06 00:43:14      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:name   例程   示例   add   转换   typedef   lob   address   public   

示例程序


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

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

标签:name   例程   示例   add   转换   typedef   lob   address   public   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!