精华内容
下载资源
问答
  • #include using namespace std; class MyString { ...cout 请输入两个字符串的值" ; cin >> str1; cin >> str2; MyString p(str1, str2); p.add_str1_and_str2(); p.disp(); return 0; }

    #include
    using namespace std;
    class MyString
    {
    public:
    MyString(chars1, char s2);
    void add_str1_and_str2();
    void disp();
    private:
    char *str1;
    char str2;
    char str3;
    };
    MyString::MyString(char
    s1, char
    s2)
    {
    str1 = s1;
    str2 = s2;
    str3 = s1;
    }
    void MyString::add_str1_and_str2()
    {
    while (*str3 != ‘\0’)
    {
    str3++;
    }
    while (*str2 != ‘\0’)
    {
    *str3++ = *str2++;
    }
    *str3 = ‘\0’;
    }
    void MyString::disp()
    {

    cout << "两字符串相加的值为" << str1 << endl;
    

    }
    int main()
    {

    char str1[100], str2[100];
    cout << "请输入两个字符串的值" << endl;
    cin >> str1;
    cin >> str2;
    MyString p(str1, str2);
    p.add_str1_and_str2();
    p.disp();
    return 0;
    

    }

    展开全文
  • 1.构造函数为作者及书名指针开辟空间并将传入的书名和作者拷贝到数组Book(char name, char author) 2.一个析构函数,删除书名和作者数组 3.成员函数print()输出数据** ...

    1.构造函数为作者及书名指针开辟空间并将传入的书名和作者拷贝到数组中Book(char name, char author)
    2.一个析构函数,删除书名和作者数组
    3.成员函数print()输出数据
    **
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 类成员指针

    千次阅读 2011-08-18 11:24:17
    类成员指针一般很少用到,使用类成员指针与普通指针的区别在于,需要在类成员指针前面的加上限定符,以指明是哪个成员指针。同样,在初始化指针时,也... 当一个类有多个性质相同且类型相同的函数成员时,可

    类成员指针一般很少用到,使用类成员的指针与普通指针的区别在于,需要在类成员指针前面的加上类限定符,以指明是哪个类的成员指针。同样,在初始化指针时,也只能用相应类的相应类型的成员对指针进行初始化。

    成员指针的应用举例
     
       当一个类有多个性质相同且类型相同的函数成员时,可以使用函数表来进行函数调用,产生用同一函数使用不同参数来达到不同操作的效果,而实际上是调用了不同的函数来实现的。下面给出这样的一个例子,方便读者有一个感性的认识:
    #include <iostream>
    using namespace std;

    class Screen {
    public:
        Screen& home() {
            cout << "Home" << endl;
            return *this;
        }
        Screen& forward() {
            cout << "Forward" << endl;
            return *this;
        }
        Screen& back() {
            cout << "Back" << endl;
            return *this;
        }
        Screen& up() {
            cout << "Up" << endl;
            return *this;
        }
        Screen& down() {
            cout << "down" << endl;
            return *this;
        }
        
    // function table
        typedef Screen& (Screen:: *Action)();
        static Action Menu[];
        
    // specify which direction to move
        enum Directions {HOME, FORWARD, BACK, UP, DOWN};
        Screen& move(Directions);
    };

    Screen::Action Screen::Menu[] = {&Screen::home, &Screen::forward, &Screen::back, &Screen::up, &Screen::down};

    Screen& Screen::move(Directions dirc)
    {
        (this->*Menu[dirc])();
        return *this;
    }

    int main()
    {
        Screen sc;
        sc.move(Screen::HOME);
        sc.move(Screen::UP);
        return 0;
    }
    上面例子表明了类成员函数指针比较有优势的地方,可以扩展到用map代替上面的数组,实现高效的字符串和函数的绑定~~

    另外由于类成员函数指针匹配条件非常严格,所以不建议用在比如线程入口函数等地方,往往会报不少错误。当然,如果符合下面三个条件也可以消除编译错误。

    函数成员的指针与普通函数指针相比,也多了类限定符。由于类成员函数还有可能是const,所以const也成为成员函数指针声明的一部分。也就是说,函数成员的指针必须在三个方面与它所指函数的类型相匹配:

       (1)函数形参的类型和数目;
       (2)返回类型及是否为const函数;
       (3)所属类的类型。

     

    展开全文
  • 在C++ 定义了一个类成员中指针的时候,需要注意:如果将的对象A赋值给B的时候,两个对象的指针是指向同一个地址的,其余的变量都是相等的。在图像处理,比如定义了一个图像类成员中有具体的...

             在C++ 中,当定义了一个类,类的成员中有指针的时候,需要注意:如果将类的对象A赋值给B的时候,两个对象的指针是指向同一个地址的,其余的变量都是相等的。在图像处理中,比如定义了一个图像类,类成员中有具体的图像数据,如果将两个对象直接相等,会使两个对象的数据指针指向同一个地址。如果要使两个对象的指向不同的地址可以为类定义一个函数,用于两个对象之间的直接赋值运算。下面以例子说明。

            声明了一个类:

       

    class CImgData
    {
    public:
    int *pimgdata = new int [10];
    int width;
    int height;
    };
            主函数:
    int main()
    {
    CImgData A;
    A.width = 2;
    A.height = 3;
    for (int i = 0; i < 10; i++)
    {
    A.pimgdata[i] = i * 7 + 5;
    }
    cout << "A 的地址是: " << endl;
    cout << A.pimgdata << endl;
    
    CImgData B;
    //ACImgDataToBCImgData(A, B);
    B = A;
    cout << "B 的地址是: " << endl;
    cout << B.pimgdata << endl;
    
    
    for (int m = 0; m < 10; m++)
    cout << B.pimgdata[m] << endl;
    
    cout << "B.width= " << B.width << endl;
    cout << "B.height=" << B.height << endl;
    
    cout << "completed" << endl;
    }

          运行结果:

           可以看出:A和B的数据指针的地址相同,相关的变量被复制。

             改进:为类添加对象赋值函数

           

     void ACImgDataToBCImgData(CImgData  A, CImgData  B)
    {
    B.height = A.height;
    B.width = A.width;
    for (int i = 0; i < 10; i++)
    {
    B.pimgdata[i] = A.pimgdata[i];
    }
    }
           主函数:
          int main()
           {
    CImgData A;
    A.width = 2;
    A.height = 3;
    for (int i = 0; i < 10; i++)
    {
    A.pimgdata[i] = i * 7 + 5;
    }
    cout << "A 的地址是: " << endl;
    cout << A.pimgdata << endl;
    
    CImgData B;
    ACImgDataToBCImgData(A, B);
    
    cout << "B 的地址是: " << endl;
    cout << B.pimgdata << endl;
    
    for (int m = 0; m < 10; m++)
    cout << B.pimgdata[m] << endl;
    
    
    cout << "B.width= " << B.width << endl;
    cout << "B.height=" << B.height << endl;
    
    
    cout << "completed" << endl;
    return 0;
    }

            运行结果如下:

            

           结果显示:两个对象的指针地址不一样,因此连个对象的没有联系,只是单纯将相关的数据复制传递。但是,注意到这个时候width和height两个成员没有传递,是因为,数据变量作为函数的形参传递的时候,使用的拷贝的临时变量。

           改进:使用引用传递。

           将函数改为如下,其余的部分不变:

         

     void ACImgDataToBCImgData(CImgData  &A, CImgData  &B)
    {
    B.height = A.height;
    B.width = A.width;
    for (int i = 0; i < 10; i++)
    {
    B.pimgdata[i] = A.pimgdata[i];
    }
    }

           结果如下:

           

           结果显示:两个对象的地址不同,同时相关变量的数据值成功传递。

             

    展开全文
  • 结构体,字符串选项是用字符数组表示好,还是用字符指针表示好? typedef struct person{ char *name; int age; char sex[6]; }; 该结构体name用的是指针而不是数组,所以需要给字符串在堆上申请内存...
  • 详解函数指针类成员函数指针

    千次阅读 2017-11-12 21:35:56
    我觉得要理解这问题,以及要理解后面的函数指针类成员函数指针,没有什么比从计算机原理的角度来理解更容易了。这里就简要回顾一下相关知识。 众所周知,计算机(图灵机)执行程序的基本流程就是:取指令->执行...
  • //字符指针不分配存储区,字符常量存储于静态数据区 //C++ 字符数组有存储区,其值为存储区首地址|字符指针不分配存储区“ABC”以常量形式存于静态数据区,指针指向该区首地址 #include using namespace std; void ...
  • 结构体中指针成员的动态分配

    千次阅读 2017-05-19 11:45:12
    而结构体变量a的起始地址,也就是a结构体首个变量type的地址0x8b4d008,其中偏移4字节,跟前面示例1对比,看似并没什么问题,但是注意,示例1a->type之后是一个数组变量,而在本例,a->type之后是一个指针变量,...
  • #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; void main() { char *str = (char*)malloc(sizeof(char)*10); //分配地址空间 ...='\0') //由于字符串以'\0'结尾,故可以这样来判断 ...
  • C++中类的数据成员字符

    千次阅读 2018-09-18 17:49:07
    可以用分别使用:字符数组,string的对象,字符指针表示字符串。实现方法略有不同。 #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class CStudent { private: ...
  • 之前一直以为C++成员函数没法取地址,一直使用静态函数来充当回调函数,直到近日看别人的代码才发现类成员函数也有指针。。。总结记录一下。 普通函数指针 这面是普通函数的 指针的使用方法。 #include &lt;...
  • 这样以来,我们就定义了一个结构体类型,同时声明了一个结构体变量xiaoming。那么。我们在main函数怎样对这个结构体进行初始化呢? 可以这样 int main() { xiaoming.age = 15; xiaoming.name = (...
  • 本文主要总结一个C风格用指针方式遍历一组字符串的方法。该函数功能是遍历一组字符串,并且计算该字符串包含指定字符的个数,并且返回这个计算结果。具体代码如下所示: 1.1函数定义如下 /*定义*/ unsigned int ...
  • 她是在做一个String,主要是要实现字符串的连接。  程序是这样的,请读者将其拷到IDE,边看边调:#include #include #include using namespace std; class String { private: char* p; int len;
  • 定义一个字符

    千次阅读 2015-04-13 21:15:20
    我们知道在C++里不同于C,对于字符串如何表示有两种...种是C++库里面提供的string,可以利用它创建字符串,利用成员函数进行字符串,但是C++库只给出相应接口,如何实行已经封装好。为此我们可以不厌其烦研究如何实
  • 字符数组,字符指针,Sizeof总结

    千次阅读 2011-06-24 11:58:00
    字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符,如在代码写 "abc",那么编译器帮你存储的是"abc/0" 2."abc"是常量吗?答案是有时是,有时不是。 不是常量的情况:"abc"作为字符数组初始值的...
  • 由于name为指针指向堆空间内的内存的空间 如果不向文件写入字符串内容 那么上一行写入的结构体只包含了堆空间的地址,单独打开读取文件只会获得一个内存地址 如果你进一步操作读取到的name地址 那个地址指向的内存...
  • 自己设计一个字符 Mystring

    千次阅读 2019-10-24 15:19:31
    2、Mystring 有一个char *类型私有成员指针。 3、数据来源于键盘输入。 例如: Mystring p = “hello world” Mystring q = “wo” p + q ==> hello world wo p - q ==> hello rld 此题需要用到运算符...
  • 前言:今天复习结构体数组知识的时候,顺手做了一道编程题,没想到发现了大问题。“指针数组”还是掌握的不好。这篇博客就从那道我发现问题的题目入手,讲解一下学习过程踩...书上思路:设立一个结构体数组,数组...
  • 1)数据成员字符指针,可自动适应不同的串长度。 2)串复制,既可使用字符串常量进行复制,也可以使用其他的字符串对象进行复制。 3)串赋值。既可赋值为字符串常量,也可以赋值为使用其他的字符串对象。 4)串连接。...
  • C语言内存管理-字符数组与字符指针

    千次阅读 2011-05-13 23:14:00
    一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构的栈。 2、堆区(heap) — 一般由程序员分配释放...
  • 使用STL标准模板库之后,编程时已经很少使用数组和指针,相反,多使用序列容器vector代替之。 (std::vector&lt;int&gt;,构造函数接受const std::vector&...今天刷Leetcode想了一个问题:数组作...
  • 学习札记: C++指向字符数组的指针

    千次阅读 2012-12-09 11:54:43
    1.数组名是第一个元素的地址; 2.指针保存的是另一个对象的地址; ...记住:在cout和多数C++表达式,char数组名、指向char的指针以及用引号括起来的字符串常量都被解释为字符串第一个字符的地址
  • 基于char*设计一个字符MyString

    千次阅读 2018-04-24 18:31:58
    基于char * 设计一个字符MyString,并且具有构造函数、析构函数、拷贝构造函数,重载运算符“+”,“=”。 myString.h #ifndef __MYSTRING_H__ #define __MYSTRING_H__ #include &amp;lt;iostream...
  • :数组指针的定义方法 1.int a[10] = {1,2,3,4,5,6,7,8,9,0}; int * p; p = &amp;a[0]; // 等价于p = a;1232.int a[10] = {1,2,3,4,5,6,7,8,9,0}; int * p = a; //定义指针时直接赋值; 123二:输入字符串的...
  • 其中成员一个学生的数组;班级类中定义方法,(1)显示总分和平均分(2)显示最高分和最低分学生信息(3)向班级添加学生,即向班级类中成员数组添加学生对象。3.在班级类中定义main方法,定义班级...
  • 详解c++中类的六默认的成员函数

    万次阅读 多人点赞 2016-07-06 13:01:35
    的6默认的成员函数包括: 构造函数、析构函数、拷贝构造函数、赋值运算符重载函数、取地址操作符重载、const 修饰的取地址操作符重载。 ()构造函数 构造函数,顾名思义,为对象分配空间,进行初始化。它是...
  • struct info // 定义了一个info结构,里面有两个成员num和name[5] { short num; // 两个成员的类型分别为short型和char型 char name[5]; } struct info myinfo1,myinfo2,*p_info1,*p_info2; // 定义两个结...
  • 在C++当类中指针类型的数据成员时,必须注意在构造函数,分配专门的存储单元,并将地址赋值给指针型数据成员。  这样做的目的在于,要保证指针指向的存储单元能够由类本身控制。  如果这种情形处理不好...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 207,909
精华内容 83,163
关键字:

当类中一个字符指针成员