C++ 关于一个成员函数的实现问题

问题描述

C++ 关于一个成员函数的实现问题

/*CArray是我写的、能够运行的、利用类来实现动态创建数组的工程,现在要加一个成员函数,要求如上,我把我理解的操作都写了下来,但我的疑问是在第一个判断条件中,函数返回要怎么写,是要跳过这个函数吗?除了这点,我下面写的实现过程有错吗?在main函数中能够输出对象obj1 resize后的数组吗?请大神们多多指教~*/

#include <iostream>
using namespace std;

class CArray{
public:CArray(unsigned int length=0);
public:
    void print();
    void set();
    void resize(unsigned int length=0);
private:
    double *m_data;
    unsigned int m_nLength;
};

void CArray::resize(unsigned int length)
{
    if(length==m_nLength)
    //函数返回要怎么写??

    else
    delete []m_data;
    if(length==0)
    m_data=NULL;
    else
    m_data=new double[length];
    m_nLength=length;
    cout<<"请输入"<<m_nLength<<"个数:";
    unsigned int i;
    for(i=0;i<m_nLength;i++)
        cin>>m_data[i];

}
CArray::CArray(unsigned int length)
{
    m_nLength=length;
    if( length==0)
    m_data=NULL;
    else
        m_data=new double[length];
}

void CArray::set()
{
    if( m_nLength==0)
    m_data=NULL;
    cout<<"请输入"<<m_nLength<<"个数:";
    for(unsigned int i=0;i<m_nLength;i++)
        cin>>m_data[i];
}

void CArray::print()
{
    if( m_nLength==0)
    m_data=NULL;
        unsigned int index;
        for(index=0;index<m_nLength;index++)
                cout<<m_data[index]<<" ";
}

        int main(int argc, char* argv[])
{
        unsigned int size;
        cout<<"请输入数组长度:";
        cin>>size;
        CArray obj(size);
            obj.set();
        cout<<"输入的数组为:";
        obj.print();

        CArray obj1;
        obj1.resize(3);
        obj1.print();
        return 0;
}
时间: 2025-01-24 08:56:56

C++ 关于一个成员函数的实现问题的相关文章

link中能不能不通过实例化对象访问一个成员函数?真的很焦急,谢谢

问题描述 link中能不能不通过实例化对象访问一个成员函数?真的很焦急,谢谢 link中能不能不通过实例化对象访问一个成员函数?真的很焦急,谢谢 解决方案 不可以.因为方法被允许访问成员变量,你都没有实例化怎么访问? 解决方案二: 当然可以访问实例的public方法

成员函数的说明和使用

1:类的成员函数的说明 成员函数相当于C或C++中的函数.你应该用如下的方式说明一个成员函数: Type name (Parameter)//function body 注意:每一个成员函数必须返回一个值或声明返回为空(void).它返回类型的说明告诉编译器它将返回什么类型的值.在某些情况下,成员函数需要表示它是否成功的完成了它的工作,此时返回类型通常为布尔型的.参数表是用逗号分开的一组变量,它将为成员函数提供所需信息. 下面例子中定义了一个成员函数.通过它,你的矩形类可以计算自己的面积了: i

直接调用类成员函数地址

一.成员函数指针的用法 在C++中,成员函数的指针是个比较特殊的东西.对普通的函数指针来说,可以视为一个地址,在需要的时候可以任意转换并直接调用.但对成员函数来说,常规类型转换是通不过编译的,调用的时候也必须采用特殊的语法.C++专门为成员指针准备了三个运算符: "::*"用于指针的声明,而"->*"和".*"用来调用指针指向的函数.比如: class tt { public: void foo(int x){ printf("\

成员函数指针与高性能的C++委托 (Member Function Pointers and the Fastest Possible C++ Delegates)

标准C++中没有真正的面向对象的函数指针.这一点对C++来说是不幸的,因为面向对象的指针(也叫做"闭包(closure)"或"委托(delegate)")在一些语言中已经证明了它宝贵的价值.在Delphi (Object Pascal)中,面向对象的函数指针是Borland可视化组建库(VCL,Visual Component Library)的基础.而在目前,C#使"委托"的概念日趋流行,这也正显示出C#这种语言的成功.在很多应用程序中,&qu

C++普通函数指针与成员函数指针实例解析_C 语言

C++的函数指针(function pointer)是通过指向函数的指针间接调用函数.相信很多人对指向一般函数的函数指针使用的比较多,而对指向类成员函数的函数指针则比较陌生.本文即对C++普通函数指针与成员函数指针进行实例解析. 一.普通函数指针 通常我们所说的函数指针指的是指向一般普通函数的指针.和其他指针一样,函数指针指向某种特定类型,所有被同一指针运用的函数必须具有相同的形参类型和返回类型. int (*pf)(int, int); // 声明函数指针 这里,pf指向的函数类型是int (

调用成员函数this指针突然变为NULL

问题描述 调用成员函数this指针突然变为NULL 成员函数在调用另一个成员函数的时候,this指针变成了NULL,想请问一下是什么原因,该怎么解决呢? (数组溢出已经检查过了,都没有) 解决方案 搞清this永远指调用当前对象,这样就不会出错了 解决方案二: 贴出代码来看看呗. 单从你的问题描述来看,this指针是null,一般是因为调用这个成员函数的对象本身就是null.例如: class A{...} int main(){ A* p = NULL; p->method(); } 进入这个

C++中Operator类型强制转换成员函数解析_C 语言

类型转换操作符(type conversion operator)是一种特殊的类成员函数,它定义将类类型值转变为其他类型值的转换.转换操作符在类定义体内声明,在保留字 operator 之后跟着转换的目标类型.转换函数又称类型强制转换成员函数,它是类中的一个非静态成员函数.它的定义格式如下: 复制代码 代码如下: class <类型说明符1> { public: operator <类型说明符2>(); - } 这个转换函数定义了由<类型说明符1>到<类型说明符2

class-关于类的成员函数问题

问题描述 关于类的成员函数问题 Person::Person(const std::string&ln, const char*fn = "Heyyou") 这是在类申明中的一个成员函数声明,为什么在在定义这个函数的时候会重定义?该怎么解决? 解决方案 重定义要么是同样的函数重载参数形式的函数定义了好几个,要么虽然你没有这么做,但是你重复用include包含了定义函数的源代码. 解决方案二: 类的成员函数类模板成员函数的调用问题c++ 类中的成员函数在内存空间的分配问题

c++ 成员函数与非成员函数的抉择_C 语言

1.尽量用类的非成员函数以及友元函数替换类的成员函数 例如一个类来模拟人People 复制代码 代码如下: 1 class People{ 2 public: 3 ... 4 void Getup( ); 5 void Washing( ); 6 void eating( ); 7 ... 8 } 其实上面三个动作是早上"起床"."洗簌"."吃饭"三个常见的动作,如果现在用一个函数来表示使用成员函数即为 复制代码 代码如下: 1 class Pe