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

C++类的成员函数 | 成员函数

C++成员函数的性质 C++,类的成员函数是函数的一种,它有返回值和函数类型,它与一般函数的区别只是:  属于一个类的成员,出现在类体。...C++使用类函数时,要注意调用它的权限以及它的作用域,私有的成员函数只能被本类的其他成员函数所调用,而不能被类外调用,成员函数可以访问本类任何成员,可以引用在本作用域中有效的数据。 ...C++,有的函数并不是准备为外界调用的,而是为本类成员函数所调用的,就应该将它们指定为 private。...C++类外定义成员函数 上述所讲成员函数是类体定义的,C++也可以类体只写成员函数的声明,而在类的外面进行函数定义。...+类体中直接定义函数时,不需要在函数名前面加上类名,但成员函数类外定义时,必须在函数名前面加上类名, //作用域限定符 ∷ C++,用作用域限定符声明 数是属于哪个类的,如果在作用域运算符的前面没有类名

1.8K74
您找到你想要的搜索结果了吗?
是的
没有找到

終於弄明白C++關鍵字了(1)

共用体变量起作用的成员是最后一个存放的成员存入一个新的成员后,原有的成员就失去作用。...代表2.cpp里可以查找使用其他文件的变量,函数。...a.1.h聲明 #pragma once int n=1; int add(int,int); b.1.cpp定義 #include int add(int i,int j...而静态数据成员被当作是类的成员,由该类型的所有对象共享访问,对该类的多个对象来说,静态数据成员只分配一次内存。静态数据成员存储全局数据区。静态数据成员定义时要分配空间,所以不能在类声明定义。...; } 顯示: 5.inline c/c++ ,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了 inline 修饰符,表示为内联函数。

26210

程序员应该掌握的600个英语单词

最佳可行式  (从 viable functions 挑出的最佳吻合者)  binary search 二分搜寻法 二分查找  binary tree 二元树 二叉树  binary function...)运算子调用操作符  (同 function call operator)  candidate function 候选式 候选函数  (式多载决议程序中出现的候选式)  chain 串链(例...+ 资料型别) 枚举  enumerators 列举元(enum 型别成员) 枚举成员、枚举器  equal 相等 相等  equality 相等性 相等性  equality operator equality...成员  member access operator 成员取用运算子(有 dot 和 arrow 两种) 成员存取操作符  member function 成员成员函数  member initialization...class 重新定义虚拟式  package 套件 包  pair 对组  palette 调色盘、组件盘、工具箱  pane 窗格 窗格  (有时为嵌板之意,例 Java Content Pane

1.3K00

程序员必须掌握的600个英语单词

最佳可行式 (从 viable functions 挑出的最佳吻合者) binary search 二分搜寻法 二分查找 binary tree 二元树 二叉树 binary function...)运算子调用操作符 (同 function call operator) candidate function 候选式 候选函数 (式多载决议程序中出现的候选式) chain 串链(例...+ 资料型别) 枚举 enumerators 列举元(enum 型别成员) 枚举成员、枚举器 equal 相等 相等 equality 相等性 相等性 equality operator equality...成员 member access operator 成员取用运算子(有 dot 和 arrow 两种) 成员存取操作符 member function 成员成员函数 member initialization...class 重新定义虚拟式 package 套件 包 pair 对组 palette 调色盘、组件盘、工具箱 pane 窗格 窗格 (有时为嵌板之意,例 Java Content Pane

1.3K20

C++打怪升级(一)- 命名空间、缺省形参、重载

介绍之前先来了解一下C++官方库定义的命名空间std std - C++标准库的命名空间名 C++的头文件定义的所有内容成员(定义与实现)都处在一个命名空间(作用)域std,用以与用户使用的成员相隔离...注意:早期标准库将所有功能(定义)全局域中实现,声明.h后缀的头文件,使用时只需包含对应 头文件即可,后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间, 规定C++头文件不带...这里就是C语言不支持重载的原因: 同一个源文件定义的相同的函数名后,到形成符号表这里会出现两个相同的函数名,并且这两个函数还都是有效的,是编译错误。...如果不在同一个源文件编译链接,分别形成的符号表里各自出现函数名,并且分配一个有效的地址。...只有返回值类型不同,不构成重载,因为函数调用时无法区分要调用哪一个函数,产生了二义性。 那么,有一个问题:C++函数返回值类型可以用来修饰函数名吗?

79420

ndk C++ 编译器的函数名修饰规则

当然,某些情况下需要指定函数的名字修饰,例如在C++程序, 为了让LINK程序或其他工具能够匹配到正确的函数名字,就必须为重载函数和一些特殊的函数(如构造函数和析构函数)指定名字装饰。...另一种需要指定函数的 名字修饰的情况是汇编程序调用C或C++的函数。如果函数名字,调用约定,返回值类型或函数参数有任何改变,原来的名字修饰就不再有效,必须指定新的 名字修饰。...对于C++的类成员函数(其调用方式是thiscall),函数的名字修饰与非成员C++函数稍有不同,首先就是数名字和参数表之间插入以“@”字 符引导的类名;其次是参数表的开始标识不同,公有(public...成员 数CopyInfo只有一个参数,是对类CTest的const引用参数,其函数修饰名为 “?CopyInfo@CTest@@IAEXABV1@@Z”。...MakeFun的函数认为是 __cdecl调用方式,b模块的这些函数调用完MakeFun当然要帮着恢复堆栈啦,可是MakeFun已经结束时自己恢复了堆栈,b模块 数这样多此一举就引起了栈指针错误

2K31

C++】类与对象【定义、访问限定符、this指针】

C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完 成。 类的引入 C语言结构体只能定义变量,C++,结构体内不仅可以定义变量,也可以定义函数。...C++更喜欢用class来代替。 类的定义 class为定义类的关键字,ClassName为类的名字,{}为类的主体,注意类定义结束时后面分号不能省略。...类声明放在.h文件成员函数定义放在.cpp文件,注意:成员数名前需要加类名:: 一般情况下,我们建议采用第二种形式。 成员变量命名规则的建议: 如上图,这样命名会出现区分不了的问题。...this指针 对于上述类,有这样的一个问题: Date类中有 Init 与 Print 两个成员函数,函数体没有关于不同对象的区分,那当d1调用 Init 数时,该函数是如何知道应该设置d1对象?...C++过引入this指针解决该问题,C++编译器给每个“非静态的成员函数“增加了一个隐藏 的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),函数体中所有“成员变量” 的操作,都是通过该指针去访问

11210

C++】三大特性之多态

派生类对象 d 也有一个虚表指针, d 对象由两部分构成,一部分是父类继承下来的成员,虚表指针也就是存在部分的另一部分是自己的成员。 2....(VS的情况) 5....而我们如果用的是指针或者引用,当解引用之后我们实际的对象是子类或者父类,这样去虚表查找函数的时候才能找到不同的实现方式。 3.动态绑定与静态绑定 1....C++虚函数表解析 C++对象的内存布局 ---- 六、一些关于多态的问题 1. inline函数可以是虚函数吗?...如果是指针 对象或者是引用对象,则调用的普通函数快,因为构成多态,运行时调用虚函数需要到虚 数表中去查找。 6. 虚函数表是什么阶段生成的,存在哪的?

69750

函数模板 ## 函数模板

包含函数模板本⾝并不会⽣成函数定义,它只是⼀个⽤于⽣成函数定 义的⽅案。...⽤⼾定义的转换,如类声明定义的转换。完全匹配和最佳匹配 Type(argument-list)意味着⽤作实参的函数名与⽤作形 参的函数指针只要返回类型和参数列表相同,就是匹配的。 !...- ⼀个完全匹配优于另⼀个的另⼀种情况是,其中⼀个是⾮模板 数,⽽另⼀个不是。在这种情况下,⾮模板函数将优先于模板函数(包 括显式具体化)。...[3] = { {"jinlin",2400.0}, {"alan",1300.0}, {"xuan",1800.0} }; double* pd[3]; //设置指针pd指向mr_E的成员...- 如果函数定义是使⽤函数前提供的,它将充当函数原型。多个参数的函数 编译器必须考虑所有参数的匹配情况

2.1K10

计算机常用算法对照表整理

最佳可行式 (从 viable functions 挑出的最佳吻合者) binary search 二分搜寻法 二分查找 binary tree 二元树 二叉树 binary...)运算子调用操作符 (同 function call operator) candidate function 候选式 候选函数 (式多载决议程序中出现的候选式) chain...+ 资料型别) 枚举 enumerators 列举元(enum 型别成员) 枚举成员、枚举器 equal 相等 相等 equality 相等性 相等性 equality operator...成员 member access operator 成员取用运算子(有 dot 和 arrow 两种) 成员存取操作符 member function 成员成员函数 member...derived class 重新定义虚拟式 package 套件 包 pair 对组 palette 调色盘、组件盘、工具箱 pane 窗格 窗格 (有时为嵌板之意,例

1.7K31

计算机常用算法对照表整理

最佳可行式 (从 viable functions 挑出的最佳吻合者) binary search 二分搜寻法 二分查找 binary tree 二元树 二叉树 binary...)运算子调用操作符 (同 function call operator) candidate function 候选式 候选函数 (式多载决议程序中出现的候选式) chain...+ 资料型别) 枚举 enumerators 列举元(enum 型别成员) 枚举成员、枚举器 equal 相等 相等 equality 相等性 相等性 equality operator...成员 member access operator 成员取用运算子(有 dot 和 arrow 两种) 成员存取操作符 member function 成员成员函数 member...derived class 重新定义虚拟式 package 套件 包 pair 对组 palette 调色盘、组件盘、工具箱 pane 窗格 窗格 (有时为嵌板之意,例

1.9K61

模版初阶

于是C++引入了模版的概念. 函数模版 类似于实现一种类型功能的函数所使用的模具。 函数模板格式 template<typename T1, typename T2,.........(用户也可以自己进行类型强制转换Add(a, (int)d); ) 下面是进行修改后的代码,实例化格式也如下: // 显式实例化:数名后的中指定模板参数的实际类型 cout << Add<int...模板函数不允许自动类型转换,但普通函数可以进行自动类型转换 C++,当考虑函数重载和类型转换时,非模板函数相比模板函数有一个特点,即非模板函数可以利用C++的隐式类型转换规则(也称为标准转换序列),...,当你类定义之外(类外)声明或定义成员函数时,需要使用模板语法来指定模板参数,这是因为成员函数实际上是模板类的成员,它们的实现依赖于类模板的类型参数。...template 声明这是一个模板函数定义,T 是模板参数,它必须与Stack类模板的参数类型相匹配。 Stack:: 表示这是类Stack的一个成员函数。

3400

C++教程(最全)「建议收藏」

C++定义了string类,Visual C++定义了Cstring类。 字符串每一个字符占用一个字节,再加上最后一个空字符。如: //字符串长度为8个字节,最后一位是'\0'。...+程序每一项操作基本都是由一个函数来实现的,C++程序只能有一个主函数(main) 9.1 函数声明与定义 函数类型-函数的返回值类型;函数名-必须符合C++标识符命名规则,后面必须跟一对括号;函数体...成员数名(参数列表) { 函数体; } 内联函数的代码会直接嵌入到主调函数,可以节省调用时间,如果成员函数类内定义,自动为内联函数。...C++中用class定义的类,其成员的默认存取权限是private。...remove:容器删除一个元素。 random_shuffle:随机打乱容器的元素。 fill:用某个值填充容器。 不会改变其所作用的容器。例如: find:容器查找元素。

2.5K30

C++教程(凯格尔训练法教程)

C++定义了string类,Visual C++定义了Cstring类。 字符串每一个字符占用一个字节,再加上最后一个空字符。如: //字符串长度为8个字节,最后一位是'\0'。...+程序每一项操作基本都是由一个函数来实现的,C++程序只能有一个主函数(main) 9.1 函数声明与定义 函数类型-函数的返回值类型;函数名-必须符合C++标识符命名规则,后面必须跟一对括号;函数体...成员数名(参数列表) { 函数体; } 内联函数的代码会直接嵌入到主调函数,可以节省调用时间,如果成员函数类内定义,自动为内联函数。...C++中用class定义的类,其成员的默认存取权限是private。...remove:容器删除一个元素。 random_shuffle:随机打乱容器的元素。 fill:用某个值填充容器。 不会改变其所作用的容器。例如: find:容器查找元素。

2.8K20

后台开发:核心技术与应用实践 -- C++

,用这种格式时,编译器先查找当前目录是否有指定名称的头文件,然后从标准头目录 进行查找。...C++允许用同函数名定义多个函数,但这些函数必须参数个数不同或类型不同,这就是函数重载。...C语言中, struct 不能定义成员函数,而在 C++ ,增加 class 类型后 ,扩展了 struct 的功能,struct 也能定义成员函数了。...静态成员函数与非静态成员函数的根本区别是:非静态成员函数有 this 指针,而静态成员函数没有 this 指针,由此决定了静态成员函数不能访问本类的非静态成员 C++ 程序,静态成员函数主要用来访问静态数据成员...类的多态 C++ 程序设计,多态性是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数。

1.3K10

C++之多态

Person p1; Func(p1); Student s1; Func(s1); return 0; } 2.2 虚函数 虚函数:即被virtual修饰的类成员函数称为虚函数...<< endl; } }; class Student :public Person { public: /*注意:重写基类虚函数时,派生类的虚函数不加virtual关键字时,虽然也可以构成重写...Student() { cout << "~Student()" << endl; } }; // 只有派生类Student的析构函数重写了Person的析构函数,下面的delete对象调用析构...• 虚函数不能是静态成员函数 • 虚函数不能是友元函数 • 若在基类定义虚函数,派生类需要重新定义 • 构造函数不能是虚函数 • 析构函数可以是虚函数 2.5 C++11 override...和 final 从上面可以看出,C++对函数重写的要求比较严格,但是有些情况下由于疏忽,可能会导致函数名字母次序写反而无法构成重载,而这种错误在编译期间是不会报出的,只有程序运行时没有得到预期结果才来

5610

C++入门】命名空间、缺省参数、函数重载

总而言之,从名称上面我们也可以看得出来,C++C的基础上进行不断地优化发展。事实上确实是这样,C语言中90%以上的语法C++中都适用。...,C语言中,对于此类问题是无法得到有效解决的,除非就是自己换一个名称,但是C++针对此类问题是可以通过命名空间(关键字:namespace)得到解决的。...但是C++的输入输出则不需要手动输入格式,C++的输入输出会自动识别类型。...这里涉及到了函数名修饰规则,这里由于windows下的命名规则太过繁杂,我们Linux环境下进行演示。...答案是通过编译器的函数名修饰规则,这里我们分别演示C和C++两种环境下链接器是如何查找Add的。 因此我们得出结论:linux下,采用gcc编译完成后,函数名字的修饰没有发生改变。

64830

C++心决之类和对象详解(中篇)(封装入门二阶)

空类真的什么都没有吗?并不是,任何类什么都不写时,编译器会自动生成以下 6 个默认成员 函数。 默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。...,又打了补丁,即: 内置类型成员变量声明时可以给默认值 。...而 对象销毁时会自动调用析构函数,完成对象中资源的清理工作 。 3.2 特性 析构函数 是特殊的成员函数,其 特征 如下: 1. 析构函数名类名前加上字符 ~。 2....5.赋值运算符重载 5.1 运算符重载 C++ 为了增强代码的可读性引入了运算符重载 , 运算符重载是具有特殊函数名的函数 ,也具有其 返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似...将 const 修饰的 “ 成员函数 ” 称之为 const 成员函数 , const 修饰类成员函数,实际修饰该成员函数 的*this,表明成员函数 不能对类的任何成员进行修改。

6410

PE文件详解(七)

数组项目与文件名地址表的项目一一对应,项目值代表函数入口地址表的索引,这样 数名称与函数入口地址关联起来。...字段得到起始序号 将需要查找的导出序号减去起始序号,得到函数入口地址表的索引 检测索引值是否大于导出表的 NumberOfFunctions 字段的值,如果大于后者的话,说明输入的序号是无效的用这个索引值...从函数名查找入口地址 如果已知函数的名称,如何得到函数的入口地址呢?...,循环中将每一项定义的函数名与要查找的函数名相比较,如果没有任何一 个函数名是符合的,表示文件没有指定名称的函数 如果某一项定义的函数名与要查找的函数名符合,那么记下这个函数名字符串地址表的索引值...RVA 就是函数的入口地址 一帮情况下病毒程序就是通过函数名查找入口地址的,因为病毒程序作为一段额外的代码被附加到可执行文件的。

92710
领券