(6)风色从零单排《C++ Primer》 结构体,头文件

来源:互联网 发布:电影洛丽塔影评知乎 编辑:程序博客网 时间:2024/04/29 15:47

结构体:

c++11下,可以对结构体像类一样初始化。

struct Sales_data{    std::string bookNo;    unsigned units_sold;    double revenue;    Sales_data(){        bookNo = "book";        units_sold = 1;        revenue = 10.0;    }};

结构体必须以;号结束,这是因为在定义的同时可以实力化变量,然而这样做是不值得推荐的。

struct Sales_data{    std::string bookNo;    unsigned units_sold;    double revenue;    Sales_data(){        bookNo = "book";        units_sold = 1;        revenue = 10.0;    }} b1,b2,*b3;

头文件:

如果我们定义的东西要在多个文件中使用,我们便把它定义在头文件中,否则每个文件都要定义一样的东西。一般来说,一般来说,类名和头文件的名称是相同的。例如Sales_data Class的头文件时Sales_data.h。

为了解决可能的重复引用头文件的情况,引入了一种技术——Preprocessor(预处理)。在编译和运行之前,会进行预处理,在源代码中,当遇到#include的时候,会进行一些替换。

////  Sales_data.h//  ex2.9////  Created by fengsser on 15/6/27.//  Copyright (c) 2015年 fengsser. All rights reserved.//#ifndef SALES_DATA_H#define SALES_DATA_hstruct Sales_data{    std::string bookNo;    unsigned units_sold;    double revenue;    Sales_data(){        bookNo = "book";        units_sold = 1;        revenue = 10.0;    }};#endif

我们用#ifndef,#define,#endif来包含我们的头文件内容。这样,当第一次引入时,#ifndef判断SALES_DATA_H这个变量还没定义,就会往下执行,定义SALES_DATA_H。重复引入时,#ifndef判断失败,就不会再复制#ifndef到#endif之间的内容。

一般来说,定义的预处理变量和文件名是一致的,并用大写。无论你的头文件是否会被多次引用,都应该养成编写这种头文件保护的机制。


至此,第二章结束。

0 0
原创粉丝点击