成员函数可在类体之内、也可在类体之外被定义。规范的做法是将成员函数的说明部分(函数原型)放在类体之内,而将成员函数的定义部分放在类体之外。如下例:
class integ //用户建立的一个类
{
int j;
public:
integ( ) { j = 6; } //构造函数的定义部分
int sq( ); //成员函数的说明部分
};
int integ::sq( ) //成员函数的定义部分
{ return j*j; }
实践中,当成员函数比较短小而且没有技术秘密时,就将成员函数的定义部分也放在类定义内。如下例:
class integ //用户建立的一个类
{
int j;
public:
integ( ) { j = 6; } //构造函数的定义部分
int sq( ) { return j*j; } //成员函数的定义部分
};
当成员函数的定义部分被放在类体内时,该成员函数被称为内联函数(in-line functions,或内置函数)。
所有书上都认为内联函数具有“宏”的作用,能加快程序的运行。实际不然,至少在VC++ 6.0系统内不是这样。本系统内,内联函数不起任何作用。请看下例的两个程序inline.cpp和notinline.cpp中类的表达。前一程序使用了内联函数,后面的程序不使用内联函数。如下:
// inline.cpp全部程序
#include "iostream.h"
class base {
public:
base(int j) { x = j; }
int x;
int inc( ) { return x++; } //成员函数的定义,此为内联函数
};
void main()
{
base p(6);
cout<< "p.x is "<< p.x <<endl;
p.inc( );
cout<< "p.x is "<< p.x <<endl;
}
/* Results:
p.x is 6
p.x is 7 */
// notinline.cpp程序的不同部分
#include "iostream.h"
class base {
public:
base(int j) { x = j; }
int x;
int inc( ); //成员函数的说明而非定义
};
int base::inc( ) { return x++; }
//成员函数的定义,此非内联函数
有意思的是,这两个程序的汇编语言部分竟然完全相同。这说明至少在VC++ 6.0系统内,内联函数与非内联函数是等同的。
===============================================
未完待续,转载时请表明出处:http://www.cofftech.com/thread-1388-1-1.html
===============================================
分享到:
相关推荐
5. **类和对象**:C++的核心是面向对象编程,类是对象的蓝图,定义了对象的属性(成员变量)和行为(成员函数)。对象是类的实例,可以调用类中定义的方法。 6. **模板和泛型编程**:C++的模板允许创建泛型代码,...
标签"C++学习笔记"直接关联到标题,指明文档的主要内容和范畴。 从给定的内容部分中,我们可以提炼出以下知识点: 1. 数据类型和内存单位 - byte、bit的关系:1 byte = 8 bits。 - 常见内存单位换算:1 KB(千...
【C++学习笔记概述】 C++是一门强大的编程语言,其在C语言的基础上进行了扩展,引入了许多现代化的特性。这份笔记主要涵盖了C++的基础知识,包括C++11和C++17的新特性,旨在帮助初学者理解C++的核心概念。 ### C++...
### Visual C++学习笔记知识点详解 #### 1. Win32API详解 Win32API是微软为其32位平台提供的应用程序编程接口(Application Programming Interface),适用于所有基于Win32平台运行的应用程序。通过调用Win32 API中...
这个“C & C++学习笔记集合”显然是一份综合性的资源,旨在帮助学习者深入理解和掌握这两种语言。 C 语言是基础,它的语法简洁明了,对内存管理有直接的控制,是理解计算机底层工作原理的良好起点。C 语言的核心...
- 对象由数据成员和成员函数两部分组成。 - 不同类对象的数据成员是独立存储的,但成员函数是共享的。 2. **隐式指针this**: - 当对象调用成员函数时,系统会隐式地传递一个指针`this`,指向当前对象。 - `...
类是对象的蓝图,它定义了对象的状态(成员变量)和行为(成员函数)。对象是类的实例,具有类所定义的属性和操作。封装是将数据和操作数据的方法绑定在一起,隐藏内部实现细节。继承允许子类(subclass)从父类...
总结,C++学习笔记涵盖了从基础到高级的各种主题,包括面向对象编程的精髓、模板和标准库的使用、异常处理和命名空间的管理,以及C++11及后续标准的新特性。通过深入理解和实践这些知识点,开发者能够熟练掌握C++,...
- const成员函数:表明该成员函数不会修改其所作用的对象,这可以允许该成员函数在const对象上操作,从而提供更多的灵活性。 - const对象:一旦被初始化后,其值就不能被改变,这有助于保护对象中的数据不被修改。...
在C++学习中,了解和掌握基本概念是至关重要的。首先,C++支持多种源文件扩展,如.cpp、.cc、.cxx以及.C。这些扩展主要用于编译器识别,但实质上,它们都是C++源代码文件。在编程时,常常会引入头文件,如iostream...
6. **类与对象**:类是C++中的蓝图,定义了数据成员(属性)和成员函数(方法)。对象是类的实例,可以访问类中定义的成员。 7. **构造函数与析构函数**:构造函数用于初始化新创建的对象,而析构函数在对象生命...
这份"C++学习笔记、心得"涵盖了从基础语法到面向对象编程的概念,是作者一个半月辛勤学习的结晶。在这里,我们将深入探讨其中可能包含的知识点,并提供一些理解和应用C++的关键指导。 1. **基础语法**:C++的基础...
3. **类与对象**:C++的核心是面向对象编程,其中类是对象的蓝图,定义了对象的属性(成员变量)和行为(成员函数)。对象是类的实例,通过new关键字创建。 4. **构造与析构函数**:构造函数在对象创建时自动调用,...
派生类不仅获得基类的所有数据成员和成员函数,还能够添加新的成员,重定义已有成员函数,以及调整基类成员的访问权限。继承有助于代码重用,表达类之间的层次关系,如“is-a”关系。 C++提供两种继承方式: 1. **...
【C和C++学习笔记】是一份集合了C语言与C++编程基础知识的学习资料,适合初学者进行系统学习。这份笔记可能包含了从基础语法到高级特性的详细讲解,旨在帮助初学者理解这两种语言的核心概念。 C语言是计算机科学中...
6. **运算符重载**:C++允许为类的成员函数定义特定的运算符行为,如自增自减、加减乘除等。 7. **模板**:模板是C++的泛型编程工具,允许创建能够处理多种数据类型的函数或类。 8. **流式I/O**:C++标准库提供...
19. **设计class犹如设计type**:考虑类作为抽象数据类型,关注其封装性和抽象性,避免暴露内部细节。 20. **宁以pass-by-reference-to-const替换pass-by-value**:传递大对象或不可变对象时,传引用更高效,且不会...
这只是C++学习笔记的冰山一角,深入学习还将涉及类、对象、派生类、构造函数、析构函数、运算符重载、模板、预处理指令、容器、函数指针、函数对象以及Lambda表达式等。面向对象编程是C++的核心特性,包括封装、继承...
类是定义对象的蓝图,包含了数据(成员变量)和操作数据的方法(成员函数)。对象则是类的实例,通过对象可以访问和修改类中的成员。 3. **封装**:封装是OOP的三大特性之一,它允许我们隐藏内部实现细节,只暴露...
这份"C++笔记"包含了学习C++时的重要知识点和实践技巧。 1. **基础语法**:C++的基础包括变量、数据类型(如整型、浮点型、字符型等)、运算符(算术、比较、逻辑、位运算符等)、流程控制语句(如if-else、switch-...