菜鸟C++自学笔记【包含函数的结构】

简介:

C++给结构增加了一种新成员类型-------在C++中,结构可以包含函数,这意味着通过给结构增加函数,就使结构可以包含所绑定的算法,而这些算法还可作于其他结构成员。让算法与算法处理的数据密切关联,这种关联就是C++支持封装的方式。

如下提供一段为结构增加函数的代码:

 

#include  " stdafx.h "
#include 
< iostream >


struct  Date{
    
int  month,day,year;
    
void  display(); 
};
 
void  Date::display(){
    
static   char *  mon[] = {
        
" January " , " February " , " March " , " April " , " May "
            ,
" June " , " July " , " August " , " Setember " , " October " , " November " , " December "
    };
    std::cout
<< mon[month - 1 ] << "    " << day << " , " << year << " \n " ;
}
 

int  main( int  argc,  char *  argv[])

    Date birthday
= { 4 , 6 , 1961 };
    std::cout
<< " terry is date birth is  " ;
    birthday.display();
    
return   0 ;
}

 

 

以上程序代码,把类声明外的display函数声明记做Date::display。这种写法告诉C++编绎器,存在支持Date 结构实例的显示成员函数。事实上,只有己声明的Date 的结构成员才能调用这个显示函数。

程序中的main 函数声明一个名为birthday的Date 实例,并让其初始化。然后,main 函数调用Date::display函数,把它看成birthday变量的结构成员,写法如下:

birthday.display();

Date::display 函数可以直接引用结构中其他相关成员,而不必在成员名前加上结构的实例名,因为函数本身就是结构成员。Date::display 函数还声明了一个指向字符串数组的指针数组,它用字符串初始化。

TIP:实现结构函数体的函数名必须与结构类型一致。

运行效果如下:

 

上面的代码我们还可以在main 函数里面声明同一结构的多个实例,在为某个特定结构对象调用函数时,成员函数把自己与对象的数据关联起来。代码如下:

 

#include  " stdafx.h "
#include 
< iostream >


struct  Date{
    
int  month,day,year;
    
void  display(); 
};
 
void  Date::display(){
    
static   char *  mon[] = {
        
" January " , " February " , " March " , " April " , " May "
            ,
" June " , " July " , " August " , " Setember " , " October " , " November " , " December "
    };
    std::cout
<< mon[month - 1 ] << "    " << day << " , " << year << " \n " ;
}
 

int  main( int  argc,  char *  argv[])

    Date birthday
= { 4 , 6 , 1961 };
    std::cout
<< " terry is date birth is  " ;
    birthday.display();


    Date sharons_birthday
= { 10 , 12 , 1988 };
    std::cout
<< " Share's date of birthday " ;
    sharons_birthday.display();


    Date wndys_birthday
= { 4 , 28 , 1999 };
    std::cout
<< " wndy's date of birth is  " ;
        wndys_birthday.display();
    
return   0 ;
}

 

 

运行效果如下:

 

 

新手初学,还有很多不懂,请各位大侠赐教。


 本文转自 terry_龙 51CTO博客,原文链接:http://blog.51cto.com/terryblog/405797,如需转载请自行联系原作者



相关文章
|
25天前
|
C语言 C++
C/C++ 自定义头文件,及头文件结构详解
还是从"stdio.h"说起,这是C语言中内置的标准库,也就是说,头文件很多时候其实就是一个“库”,类似于代码的仓库,也就是说将某些具有特定功能的常量、宏、函数等归为一个大类,然后放进这个“仓库”,就像stdio.h就是一个标准输入/输出的头文件
30 1
|
1月前
|
C++
C++ 数学函数、头文件及布尔类型详解
C++ 支持数学操作,如`max`和`min`函数找最大值和最小值,以及`&lt;cmath&gt;`库中的`sqrt`、`round`等数学函数。`bool`类型用于布尔逻辑,取值`true`(1)或`false`(0)。布尔表达式结合比较运算符常用于条件判断,例如在`if`语句中检查年龄是否达到投票年龄。在代码示例中,`isCodingFun`和`isFishTasty`变量分别输出1和0。
123 1
|
5天前
|
存储 C++
c/c++宏定义(函数)
c/c++宏定义(函数)
|
7天前
|
编译器 C++
【C++进阶】引用 & 函数提高
【C++进阶】引用 & 函数提高
|
7天前
|
安全 Java 程序员
【C++笔记】从零开始认识继承
在编程中,继承是C++的核心特性,它允许类复用和扩展已有功能。继承自一个基类的派生类可以拥有基类的属性和方法,同时添加自己的特性。继承的起源是为了解决代码重复,提高模块化和可维护性。继承关系中的类形成层次结构,基类定义共性,派生类则根据需求添加特有功能。在继承时,需要注意成员函数的隐藏、作用域以及默认成员函数(的处理。此外,继承不支持友元关系的继承,静态成员在整个继承体系中是唯一的。虽然多继承和菱形继承可以提供复杂的设计,但它们可能导致二义性、数据冗余和性能问题,因此在实际编程中应谨慎使用。
12 1
【C++笔记】从零开始认识继承
|
11天前
|
C++
C++从入门到精通:2.1.2函数和类——深入学习面向对象的编程基础
C++从入门到精通:2.1.2函数和类——深入学习面向对象的编程基础
|
11天前
|
存储 C++
C++从入门到精通:2.1.1函数和类
C++从入门到精通:2.1.1函数和类
|
12天前
|
存储 搜索推荐 C++
【C++高阶(二)】熟悉STL中的map和set --了解KV模型和pair结构
【C++高阶(二)】熟悉STL中的map和set --了解KV模型和pair结构
|
19天前
|
机器学习/深度学习 定位技术 C++
c++中常用库函数
c++中常用库函数
39 0
|
20天前
|
算法 搜索推荐 C++
浅谈sort函数底层(一道c++面试的天坑题)
浅谈sort函数底层(一道c++面试的天坑题)