首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在c ++中有&func或class :: func的用途吗?

在 C++ 中,&funcclass::func 都是有特定用途的。

&func 是一个指向函数的指针。它用于指向一个函数,并允许您将该函数作为参数传递给其他函数或将其存储在数据结构中。例如:

代码语言:cpp
复制
void my_function() {
  // ...
}

int main() {
  void (*func_ptr)() = &my_function;
  func_ptr();
  return 0;
}

在这个例子中,func_ptr 是一个指向 my_function 的指针,可以通过 func_ptr() 调用该函数。

class::func 是一个成员函数。它用于在类中定义成员函数,并且可以通过对象进行调用。例如:

代码语言:cpp
复制
class MyClass {
public:
  void my_function() {
    // ...
  }
};

int main() {
  MyClass obj;
  obj.my_function();
  return 0;
}

在这个例子中,MyClass 类中定义了一个名为 my_function 的成员函数,可以通过 obj 对象进行调用。

这两个用法都是 C++ 中常见的用法,可以帮助您更好地组织和管理代码。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

typedef用法

用途二:用在旧C代码中(具体多旧没有查),帮助struct。...;int y;}POINT;POINT p1; // 这样就比原来方式少写了一个struct,比较省事,尤其大量使用时候或许,C++中,typedef这种用途二不是很大,但是理解了它,对掌握以前旧代码还是有帮助...,毕竟我们项目中有可能会遇到较早些年代遗留下来代码。...问题出在你不能在声明中有多个存储类关键字。因为符号 typedef 已经占据了存储类关键字位置, typedef 声明中不能用 register(任何其它存储类关键字)。...唯一要改是 typedef 本身。大多数情况下,甚至这个微小变动完全都可以通过奇妙条件编译来自动实现。不是?

90540

#define和typedef用法与区别及面试问题

typedef和#define用法与区别 一、typedef用法 C/C++语言中,typedef常用来定义一个标识符及关键字别名,它是语言编译过程一部分,但它并不实际分配内存空间,实例像:...1中有关于#define语句弊端分析,以及好替代方法,大家可参看。...我主张用typedef,因为早期许多C编译器中这条语句是非法,只是现今 编译器又做了扩充。...用途二:  用在旧C代码中(具体多旧没有查),帮助struct。...struct,比较省事,尤其大量使用时候  或许,C++中,typedef这种用途二不是很大,但是理解了它,对掌握以前旧代码还是有帮助,毕竟我们项目中有可能会遇到较早些年代遗留下来代码

3.1K10
  • 结构体定义 typedef struct 用法详解和用法小结

    声明变量时用任何一个都可以,c++中也是如此。但是你要注意是这个c++中如果写掉了typedef关键字,那么aaa,bbb,ccc将是截然不同三个对象。...,typedef可以定义新复合类型给现有类型起一个别名,C语言中,如果你使用 struct xxx { }; 方法,使用时就必须用 struct xxx var 来声明变量,而使用...struct,比较省事,尤其大量使用时候 或许,C++中,typedef这种用途二不是很大,但是理解了它,对掌握以前旧代码还是有帮助,毕竟我们项目中有可能会遇到较早些年代遗留下来代码...问题出在你不能在声明中有多个存储类关键字。因为符号 typedef 已经占据了存储类关键字位置, typedef 声明中不能用 register(任何其它存储类关键字)。...唯一要改是 typedef 本身。大多数情况下,甚至这个微小变动完全都可以通过奇妙条件编译来自动实现。不是?

    1.2K20

    快手最新面试真题

    一位程序员朋友今天(2021.01.07)参加了快手视频面试,这位朋友主要是用 C 语言作为技术栈,以下是这位朋友面试中,面试官给面试题,分享出来供大家参考,以便不时之需。...02 任职要求 1、熟悉 Linux 开发环境,熟练使用 C/C++,有高性能计算、系统软件或者嵌入式开发经验; 2、熟悉业界C++程序分析技术并对底层原理有深入认知; 3、具备良好产品Sense...面试题 一、CC++ struct 有区别? 二、对 class 理解。下面的函数会有问题?如果有,请指出其问题。...class A { private: char* ptr_; }; 五、这两个函数声明有什么区别: void func(const char* p); void func(const...六、C 语言中指针指针用途是什么? 七、下面的代码有什么问题

    59620

    编写高质量代码改善C#程序157个建议

    前言   泛型并不是C#语言一开始就带有的特性,而是FCL2.0之后实现新功能。基于泛型,我们得以将类型参数化,以便更大范围地进行代码复用。...尤其是在他们泛型版本出来以后,已经能够满足我们实际编码过程中大部分需要。...AsyncCallback(IAsyncResult ar); FCL中没一类委托声明都代表一类特殊用途,虽然可以使用自己委托声明来代替,但是这样做不仅没有必要,而且会让代码失去简洁性和标准型...建议37、使用lambda表达式代替方法和匿名方法 首先我们使用Action和Func来做一个简单小例子,控制台应用程序代码如下所示: 第一个版本 class Program...——你有携带任何酒类香烟?   No, I don't.——没有。 5、Yes, I have two bottles of whisky.——是的,我带了两瓶酒。

    45850

    初识C++ · 多态(2)

    class Car { public: virtual void Func() = 0; }; 虚函数后面加一个 =0;,这就是纯虚函数了,此时这个类叫做抽象类,抽象类特点是不能实例化对象。...class Car { public: virtual void Func() = 0; }; class Benz :public Car { public: }; 我没有重写虚函数之前,是不能实例化对象...观察最前面的代码就可以发现,子类有虚函数,继承父类中有虚函数就有虚表,子类就不需要虚表。这个现象可能都没注意到,所以虚表基本上都是继承下来父类里面的,切片时候好访问,如果再来一个虚表,存放什么?...: virtual void func3() { cout << "C::func3" << endl; } int _c; }; class D : public B, public C { public...C : virtual public A { public: virtual void func3() { cout << "C::func3" << endl; } int _c; }; class

    8610

    三大特性之多态

    多态是不同继承关系类对象去调用同一个函数,产生了不同效果行为。 静态多态 调用同一个函数,产生不同效果行为,这不就是函数重载!...多态构成必须要满足两个条件: 1.必须要通过父类引用或者指针作为形参来调用 为什么一定要是父类引用或者指针,对于这个问题《深度探索C++模型》中这样说:“一个pointer一个reference...重写两个例外 1.协变 子类对于父类函数重写,返回类型可以不同,但必须要是返回父子类关系指针引用(即基类虚函数返回基类对象指针或者引用,派生类虚函数返回派生类对象指针或者引用),称为协变 class...但这个类大小为4字节 这是因为如果一个类中有虚函数,那么该类中会有一个隐藏指针,该指针指向一个虚函数表。...class Base { public: virtual void Func1() { cout << "Base::Func1()" << endl; } virtual void Func2

    18220

    C++】三大特性之多态

    }; 3.虚函数重写(覆盖) 派生类中有一个跟基类完全相同虚函数(即派生类虚函数与基类虚函数返回值类型、函数名字、参数列表完全相同) ,称子类虚函数重写了基类虚函数。...即基类虚函数返回基类对象指 针或者引用,派生类虚函数返回派生类对象指针或者引用时,称为协变。这里父子类指针引用甚至还可以是其他父子类指针引用。...总结一下派生类虚表生成: a.先将基类中虚表内容拷贝一份到派生类虚表中 b.如果派生类重写了基类中某个虚函数,用派生类自己虚函数覆盖虚表中基类虚函数 c.派生类自己新增加虚函数按其派生类中声明次序增加到派生类虚表最后...C++虚函数表解析 C++对象内存布局 ---- 六、一些关于多态问题 1. inline函数可以是虚函数?...构造函数可以是虚函数?答:不能,因为对象中虚函数表指针是构造函数初始化列表 阶段才初始化。 4. 析构函数可以是虚函数?什么场景下析构函数是虚函数?

    76950

    C++高级编程02-函数重载和类封装

    //2、函数名称相同 //3、参数个数、类型、顺序不同 //class Person //{ //public: // void func() 成员函数 而不是全局函数 // { // } //...(int a, int b = 10) { } void func2(int a) { } void test03() { //func2(10); //出现二义性 }  5、extern C...浅析 用途C++中调用C语言文件 C++中有函数重载,会对函数名称做修饰,导致调用C语言函数链接失败 利用extern C可以解决问题 方法1: C++代码中加入...告诉编译器  show函数用C语言方式 做链接 //extern "C" void show(); 方法2: C语言头文件中加入6行代码 #ifdef __cplusplus  //...缺陷 将属性和行为分离 C++语言封装 将属性和行为作为一个整体,来表现生活中事物 将属性和行为  加以权限控制 访问权限 公共权限 public    类内 类外

    13420

    C++三大特性之多态详解

    这样就实现出了不同对象去完成同一行为时,展现出不同形态。 反过来思考我们要达到多态,有两个条件,一个是虚函数覆盖,一个是对象指针引用调用虚函数。反思一下为什么?...关于虚表说法正确是( D) A:一个类只能有一张虚表 B:基类中有虚函数,如果子类中没有重写基类虚函数,此时子类与基类共用同一张虚表 C:虚表是在运行期间动态生成 D:一个类不同对象共享该类虚表...(A) A:class A class B class C class D B:class D class B class C class A Cclass D class C class B class...inline函数可以是虚函数? 答:可以,不过编译器就忽略inline属性,这个函数就不再是inline,因为虚函数要放到虚表中去。 静态成员可以是虚函数?...答:不能,因为对象中虚函数表指针是构造函数初始化列表 阶段才初始化。 析构函数可以是虚函数?什么场景下析构函数是虚函数? 答:可以,并且最好把基类析构函数定义成虚函数。

    14210

    完全合并C++面试题

    你知道为什么VC中会得出这样一个结果? 事实上,这是VC对变量存储一个特殊处理。 为了提高CPU存储速度,VC对一些变量起始地址做了”对齐”处理。...答: 4 ————————————————————————– 27. class A { virtual void func1(); void func2(); } Class B: class...A { void func1(){cout << “fun1 in class B” << endl;} virtual void func2(){cout << “fun2 in class...B, A中func1和B中func2都不是虚函数. C, A中func2是虚函数.。B中func1不是虚函数. D, A中func2不是虚函数。B中func1是虚函数....你知道为什么VC中会得出这样一个结果? 事实上,这是VC对变量存储一个特殊处理。为了提高CPU存储速度。VC对一些变量起始地址做了”对齐”处理。

    36820

    C++11——引入新关键字

    1.auto auto是旧关键字,C++11之前,auto用来声明自动变量,表明变量存储栈,很少使用。C++11中被赋予了新含义和作用,用于类型推断。...auto关键字主要有两种用途:一是变量定义时根据初始化表达式自动推断该变量类型,二是声明定义函数时作为函数返回值占位符,此时需要与关键字decltype连用。...(const pointer) 5.noexcept C++11标准之前,C++函数声明中有exception specification(异常声明)功能,用来指定函数可能抛出异常类型[5]^{...B3::f函数?...这个头文件中有好几种class template,有helper class,用来产生编译时常量,有type traits class,用来在编译时获取类型信息,还有就是type transformation

    1.4K50

    C++】多态

    < "买票-全价" << endl; } }; 虚函数重写/覆盖 继承关系中,如果子类中有一个跟父类完全相同虚函数 – 函数名、函数参数、函数返回值都相同 (三同),则称子类虚函数重写或者覆盖了父类虚函数...,这道题不就是考察内存对齐嘛 – b 对齐 4 倍数,占 0~3 号位置,c 对齐 1 倍数,占 4 号位置,合计 5 个字节,再整体对齐一下,答案是 8;但答案真的是这样?...B:基类中有虚函数,如果子类中没有重写基类虚函数,此时子类与基类共用同一张虚表 C:虚表是在运行期间动态生成 D:一个类不同对象共享该类虚表 假设A类中有虚函数,B继承自A,B重写...多态实现原理?-- 参照上面多态原理。 inline 函数可以是虚函数?...构造函数可以是虚函数

    46600

    C++】多态

    之前文章我们学习了C++继承,这篇文章我们来学习多态 前言 需要声明,本文中代码及解释都是vs2022下x86程序中,涉及指针都是4bytes。...但是在这个地方,我们期望它是这样正常只调父类析构? 是不是不期望啊,因为如果父类指针指向是子类对象,delete时候还是只调父类析构,那是不是就可能会有内存泄漏风险啊。...那第二个条件:必须是基类指针引用去调用,满足? ,其实也是满足。...那这里调到func就是子类对象p对应func。 所以结果应该是B->0,因为子类给val缺省值是0 对??? 我们验证一下 哎呀,错了,是B->1 为啥呢?...我们之前继承那篇文章里其实又提到过final,我们说如果详设计一个不能被继承类,就可以用final。 即用final修饰一个类,可使该类变为最终类,即不能被继承类 那还有其它作用

    11510

    如何设计一个C++类?

    设计最重要一点是要表示来自某个领域概念,拿我最近在做音视频剪辑来举例,剪辑业务中有轨道概念,也有片段概念,每个轨道可包含多个片段,这时候就有些问题需要考虑,现实世界中,轨道可以复制?...tips:类名字应该明确告诉用户这个类用途。 类需要自己写构造函数和析构函数?...tips:编译器某些情况下会生成移动构造函数移动赋值运算符,但记住这些情况太麻烦了,建议手动控制,明确要时候就自己写一个,明确不要时候就delete掉。...(int等):传值 参数函数内不会更改,参数类型如果为class类型:传const引用 类声明和实现要分开写到不同文件中?...关于异常处理详细介绍可以看我这篇文章:《你c++团队还在禁用异常处理?》

    1.5K20

    C++【多态】

    ---- 前言 多态 是面向对象三大基本特征中最后一个,多态 可以实现 “一个接口,多种方法”,比如父子类中同名方法,增加了多态后,调用同名函数时,可以根据不同对象(父类对象子类对象)调用属于自己函数...难道是 围棋大师柯洁直播 “云顶之弈” 下电子围棋 ?...是 0 ?...( ) A:一个类只能有一张虚表 B:基类中有虚函数,如果子类中没有重写基类虚函数,此时子类与基类共用同一张虚表 C:虚表是在运行期间动态生成 D:一个类不同对象共享该类虚表 4.下面程序输出结果是什么...C class D B:class D class B class C class A Cclass D class C class B class A D:class A class C class

    14130

    C++进阶-多态

    C++进阶-多态 零、前言 一、多态概念和定义 二、虚函数 1、概念和定义 2、虚函数重写特例 3、C++11 override 和 final 4、重载/重写/重定义对比 三、抽象类 四、多态原理...virtual void BuyTicket() { cout << "买票-全价" << endl; } }; 虚函数重写: 派生类中有一个跟基类完全相同虚函数(即派生类虚函数与基类虚函数返回值类型...virtual 重写基类虚函数时,派生类虚函数不加virtual关键字也可以构成重写 原因: 继承后基类虚函数被继承下来了派生类依旧保持虚函数属性) 示例: class Person...(虚表指针也就),存在部分另一部分是自己成员 对于派生类d对象,因为Func1完成了重写,所以d虚表中存是重写Derive::Func1(将继承虚函数进行重写,而对应虚函数表上进行覆盖成自己虚函数地址也叫作覆盖...不能,因为对象中虚函数表指针是构造函数初始化列表阶段才初始化,如果构造函数为虚函数,会先在对象中虚函数查找对应虚函数,而此时虚函数表没有生成(动态多态是运行时绑定) 析构函数可以是虚函数

    59630

    C#基础篇 - 理解委托和事件

    委托 委托类似于C++中函数指针(一个指向内存位置指针)。委托是C#中类型安全,可以订阅一个多个具有相同签名方法函数指针。简单理解,委托是一种可以把函数当做参数传递类型。...很多情况下,某个函数需要动态地去调用某一类函数,这时候我们就在参数列表放一个委托当做函数占位符。某些场景下,使用委托来调用方法能达到减少代码量,实现某种功能用途。...,该列表称为调用列表,它包含一个多个元素。...Q:多播委托能引用多个具有返回值方法? 答案是,当然能。委托方法可以是无返回值,也可以是有返回值。不过,对于有返回值方法需要我们从委托列表上手动调用。..."You called me from Func3"; } } 匿名方法 匿名方法是C#2.0版本引入一个新特性,用来简化委托声明。

    51930
    领券