C++ 函数调用原理

来源:百度知道 编辑:UC知道 时间:2024/06/05 10:47:05
尤其是指针方面,函数返回指针是怎么进行的
我定义了一个类,然后用类的成员函数返回类的私有数据的一个char型指针,可以实现,可我在函数后面加了const后,编译就提示不能把const char* 转化为char* 这是怎么会是啊
类的成员函数返回私有int数据时,加了const依旧可以成功啊
我当然知道加了const后,不能在函数中修改,我问的是返回值问题啊。。。

可以传递,但你要是想改变指针的值就出错了!

类成员函数中const的使用
一般放在函数体后,形如:void fun() const;
任何不会修改数据成员的函数都因该声明为const类型。如果在编写const成员函数时,不慎修改了数据成员,或者调用了其他非const成员函数,编译器将报错,这大大提高了程序的健壮性。如:

class Stack

{

public:

void Push(int elem);

int Pop(void);

int GetCount(void) const; //const 成员函数

private:

int m_num;

int m_data[100];

};

int Stack::GetCount(void) const

{

++m_num; //编译错误,企图修改数据成员m_num

Pop(); //编译错误,企图调用非const函数

Return m_num;

}

我这边是完全可以的,我不知道你是怎么写的,代码如下:
class test
{
public:
test()
{
ch = "test";
a = 1;
}
char* fn() const
{
return ch;
}

private:
char * ch;
int a;

};

void main()
{
test t1;
char *