您的位置:首页 > 其它

对类里成员函数返回私有数据成员的操作

2011-06-15 16:10 232 查看
对类里面的私有指针,自己犯这样的错误:

1、 对返回指针直接赋值 god.return_pointer() = "change/n"; 当然这样编译器会报错。

2、妄想通过别的指针赋值

char* p = god.return_pointer();

p = "change/n";

这样私有成员指针当然没有被改变到。



确做法应该是增加一个 void change_pointer(char* pTo) 成员函数。

// FILE NAME:retrun_pointer_addr_change.cpp

#include <stdio.h>

#include <stdlib.h> // exit()

#include<string.h> // bzero()

#include<sys/time.h>

#include<sys/types.h>

#include<unistd.h>

#include<sys/stat.h> /*stat用到*/

#define BUFFER_SIZE 50

class Goood

{

public:

Goood()

{

str = (char*)malloc(BUFFER_SIZE);

}

~Goood()

{

free(str);

}

void init_pointer()

{

memcpy(str,"init_pointer/n",sizeof("init_pointer/n"));

pointer = str;

}

void printf_pointer()

{

printf("pointer : %s/n",pointer);

}

char* return_pointer()

{

return pointer;

}

void change_pointer(char* pTo)

{

pointer = pTo;

}

private:

char* pointer;

char* str;

};

int main()

{

Goood god;

god.init_pointer();

god.printf_pointer();

char* tem_pointer1 = god.return_pointer();

memcpy(tem_pointer1,"change/n",sizeof("change/n"));

god.printf_pointer();

/* 错误做法一 */

/*

god.return_pointer() = "change/n";

*/

/* 错误做法二 */

/*

char p = god.return_pointer();

p = "change/n";

*/

char tem_pointer2[] = "change pointer2/n";

god.change_pointer(tem_pointer2);

god.printf_pointer();

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐