对类里成员函数返回私有数据成员的操作
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;
}
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;
}
相关文章推荐
- 体验用函数访问私有数据成员
- 利用函数访问私有数据成员
- 使用成员函数访问私有数据成员
- 第九周实验报告任务4 建立一个二维数组类Douary,使该类中有以下数据成员、成员函数及友员函数,完成矩阵的输入、输出、加、减、相等判断等操作。
- 在赋值运算符函数中,类的实例能直接访问私有数据成员???
- [5.19]设计一个虚基类base,包含姓名和年龄私有数据成员以及相关的成员函数;由它派生出领导类leader,包含职务和部门私有数据成员以及相关的成员函数;再由base派生出工程师类engieer,
- 第三周程序阅读(3) 利用函数访问私有数据成员
- 《C++第九周实验报告4-1》---建立一个二维数组类Douary,使该类中有以下数据成员、成员函数及友员函数, //完成矩阵的输入、输出、加、减、相等判断等操作。
- 2,改写本章例2.1程序,要求: (1)将数据成员改为私有; (2)将输入和输出的功能改为由成员函数实现; (3)在类体内定义成员函数;
- 第九周任务四之 建立一个二维数组类Douary,使该类中有以下数据成员、成员函数及友员函数,完成矩阵的输入、输出、加、减、相等判断等操作。
- 3第一周课后练习·阅读计划(3)-使用函数来访问私有数据成员
- 第九周任务四(建立一个二维数组类Douary,使该类中有以下数据成员、成员函数及友员函数,完成矩阵的输入、输出、加、减、相等判断等操作。)
- 第3周项目0 (3) 用函数访问私有数据成员
- 定义一个圆类(Circle),私有数据成员为半径(radius)、圆周长和面积,共有成员函数为输入半径;计算周长、面积;输出半径、周长和面积。要求定义构造函数(以半径为参数,缺省值为0,周长和面积在
- 编写一个类,实现简单的栈操作。数据的操作按先进后出的顺序。成员函数为pop; push; size; full; empty; print等等
- ajax请求为异步操作时,返回的数据不会被并列函数执行
- 使用友元函数实现用外部函数修改类内的私有数据成员
- 第3周课后实践·阅读程序(3)-利用函数访问私有数据成员
- 8.6 编写一个类,其中有一个 double 型私有数据成员 yuan(存放人民币数量,单位 为元),另外包含一个转换运算符重载成员函数以将 yuan 转换成美元(假设 1 美元对换 8.268 人民
- 利用jdbc对数据表进行分页,操作存储过程(有参与无参,返回游标),函数等