(t1.*p3)()的()中的参数有什么不同?

定义指向类公有成员函数的指针时,
例:void (Time::*p)(),此处的()中一般是什么参数?

与p3=&Time::get;
(t1.*p3)()的()中的参数有什么不同?

翻阅古今
浏览 228回答 3
3回答

呼唤远方

若p要定义为一个函数的指针,()中参数类型与p将要指代的那个函数的参数一致。设Time类中有public函数:void say(){};void print(char *){};则可以声明:void (Time::*p)();可以赋p=&Time::say;类似的,可以声明:void (Time::*p1)(char*);可以有:p1=&Time::print;

慕森王

void DFS (int root, int father) {    int bot = top;    for (int i = Head[root]; i; i = Link[i].next) {        int v = Link[i].to;        if (v == father)            continue;DFS (v, root);        if (top - bot >= B) {capt[++ bind] = root;            while (top > bot)belong[Stack[top --]] = bind;}}Stack[++ top] = root;}

MYYA

1.struct成员默认访问方式是public,而 class默认访问方式是private!2.exit函数终止程序执行会调用析构函数 ,abort函数终止程序不会调用析构函数!3.静态局部变量直到程序终止时才退出!4.通过public 函数返回 private成员的引用有可能会破坏类的封装 ,造成外部变量可以改变类私有成员值!5.常量对象只能调用常量成员函数,常量成员函数可以有非常量版本重载!6.常量数据成员只能在定义时初始化或者在构造函数里用成员初始化值来初始化 ,不能用赋值语句来初始化!7.要在析构函数里面使用delete来释放使用 new申请的内存空间!8.编写析构函数来释放类中成员所申请的内存空间和使用深拷贝函数是好的编程习惯!9.operator++()是相当与++d,operator++(int) 是相当于 d++ !10.如果父类中函数是虚拟函数 ,那么在每个子类中显式声明虚拟函数是好的编程习惯!11.如果类作为基类,其析构函数要声明为虚析构函数 ,这样派生类才可以调用自己的析构函数!12.一个new 就对应一个 delete是好的编程习惯!13.istream输入read 是从文件中读取 ,ostream输出write 是写到文件中去!14.istream是seekg 重置文件指针位置 ,ostream是seekp, 文件用file.eof()来判断是否读取到文件尾部!15.assert(条件), 当满足条件时就不 assert,不满足条件才会assert!16.对于不需要修改的变量,使用常量引用来传递参数可以既保证安全性又保证效率!17.在循环之前调用srand(time(0)),然后在循环中调用 rand()函数可以使得每次随机的结果都不相同!18.一维数组形参如下:int a[],二维数组形参如下 :int a[][SIZE],第一个[] 是空的,后面必须非空!19.#define A 10 后面没有分号!20.在局部函数中用new创建的变量是存在内存中的,即便局部函数执行完毕内存变量仍然存在,但是指向它的指针有可能是局部变量,则需要在局部函数结束前调用 delete释放内存空间,以免内存泄漏
打开App,查看更多内容
随时随地看视频慕课网APP