美文网首页
函数指针以及const

函数指针以及const

作者: 青椒rose炒饭 | 来源:发表于2019-03-16 17:42 被阅读0次

先看程序吧,下面我给出程序的解释.

1,普通的函数指针

#include "iostream"
using namespace std;
void show()
{
    cout<<"kmust"<<endl;
}
int main()
{
    void (*p )(); //函数指针 
    p = &show;//函数首地址,函数名就是首地址 
    p();//运行show () 
}

函数在内存里也是按地址存储的,存储在程序段,一般函数名就是首地址,函数指针的定义 void (p)(),前面的void 是show函数的返回值类型,指针p,后面的括号说明是一个函数指针.调用直接加 "()" 就调用了show函数.运行结果

普通的函数指针: 返回值类型 (*变量名)()

运行结果.png

2,指向类成员函数的指针

指向类的成员函数的指针:返回值类型 (类名::变量名)()

#include "iostream"
#include "string.h"
#include "student.h"
using namespace std;
class Student
{
    private :
        int num;
        char name[20];
    public :
        Student(int,char[]);//函数申明可以没有变量名 
        void show();    
};
Student::Student(int num,char name[])
{
    this->num = num;
    strcpy(this->name,name);    //字符串拷贝函数 
}
void Student::show()
{
    cout<<"学号:"<<num<<endl;
    cout<<"名字:"<<name<<endl;
}
int main()
{
    Student s(007,"kmust");//调用构造函数初始化 
    void (Student:: *p) ();
    p=&Student::show; //使用函数名首地址 
    (s.*p)(); //运行show()函数 
    return 0; 
}

仔细想一想还是没有那么难以理解的 void (Student:: p) (); void 也是show的返回值类型,Student:: 表示指向的函数在Student类里, ()表示是函数指针. 赋值使用函数名取首地址赋值 .(s.p)(); *是取内容,此句相当于s.show().

运行结果

3,类中const修饰的常量,常函数

const 修饰的变量不能修改值,常对象需要调用公共成员函数需要在函数后面加上const,如果存在数据成员为常数据成员则,需要使用参数初始化列表进行初始化,不能使用构造函数.

#include "iostream"
#include "string.h"
#include "student.h"
using namespace std;
class Student
{
    private :
        const int num;//常量只能使用参数列表赋值 
        string name;
    public :
        Student():num(007),name("kmust"){};//使用参数列表为num和name赋值 
        void show() const;  
};
void Student::show() const
{
    cout<<"学号:"<<num<<endl;
    cout<<"名字:"<<name<<endl;
}
int main()
{
    const Student s;
//s常对象,想要调用公共函数必须公共函数 申明和定义后面都加const    
    s.show();//常对象调用公共函数 
    return 0; 
}

常变量只能使用常指针指向它,非const指针却能指向常量或非const变量

相关文章

  • 函数指针以及const

    先看程序吧,下面我给出程序的解释. 1,普通的函数指针 函数在内存里也是按地址存储的,存储在程序段,一般函数名就是...

  • NDK开发—指针、函数、预处理器(二)

    目录 指针、函数、预处理器 1、指针解引用、指针运算数组、指针const char *、 char const *...

  • const辨析

    const的作用:const变量,表示该变量不可修改。const成员函数,是通过const this指针隐式实现的...

  • 活用指针,const,函数指针

    一、函数特殊参数 数组做函数参数 char数组(或字符串)换成其他类型如int、double数组,也都一样。arr...

  • C++内存细节:带的函数const

    1. 带有const的函数(非参数带const),必须是“成员函数” 2. 它是对this指针的修饰,因此在此函数...

  • 16/1

    1.string的7种构造函数 构造函数参数可以是:无、const string指针、constchar指针、ch...

  • C++学习笔记(与安卓平台无关)

    C++语法 const指针 template定义 定义函数时参数类型的选择 函数参数可以传值,传引用或者传指针,如...

  • C++

    框架: 构造函数: 继承中的访问控制: 不允许重载的符号: 成员指针与成员函数指针: const的限定: 类中静态...

  • 条款 03:尽可能使用const

    const 可以用来修饰指针所指物、指针、引用、函数入参、返回值、STL迭代器等。 一、指针 char st[] ...

  • c++ 指针和引用的区别

    1. 指针有const,引用没有const 1)为了限制指针更改指向,引入了const指针(int* const ...

网友评论

      本文标题:函数指针以及const

      本文链接:https://www.haomeiwen.com/subject/wuesmqtx.html