C++ 类的头文件、实现、使用
再次吐槽下C++Primer这本书,啰哩啰嗦,废话太多。如果我来翻译的话,绝对删减一堆没用的---仅限于发牢骚。
不知道是否经典的做法
类中的成员声明在头文件中,定义(我更喜欢叫实现)在源文件中,使用的时候导入头文件即可。
但是,这里没有说明的是,源文件中需要导入头文件,而头文件不需要导入源文件!!!
至于为什么这样的导入能够成功执行,我猜应该是编译器的功劳了--但是书上没有说明。
代码如下:
// Person类的头文件,声明类的各成员
#ifndef PERSON_H
#define PERSON_H #include <iostream>
#include <string> using namespace std; // 这个不建议 class Person {
private:
string name;
int age; public:
Person();
Person(const string &_name);
Person(const string &_name, const int &_age); public:
~Person();
}; #endif // PERSON_H
// Person类的源文件,bt啊
#include "person.h" using namespace std; // 这个不建议 Person::Person() : name("anonymous"), age() {
cout << "default constructor called" << endl;
}
Person::Person(const string &_name) : name(_name) {
cout << "Person(const string&) constructor called" << endl;
}
Person::Person(const string &_name, const int &_age) : name(_name), age(_age) {
cout << "Person(const string&, const int&) constructor called" << endl;
}
Person::~Person() {
cout << "before default destructor" << endl;
}
// Person类的使用!!!
#include "person.h"
#include <iostream> using namespace std; int main(int argc, char *argv[]) {
{ Person person; } cout << "Hello World!" << endl;
return ;
}
上面的例子应该很明显了,比网络上一堆例子都简洁明了!!!
各种怨念继续飘过~~~~~~
C++ 类的头文件、实现、使用的更多相关文章
- Effective Objective-C 2.0 — 第二条:类的头文件中尽量少引入其他头文件
第二条:类的头文件中尽量少引入其他头文件 使用向前声明(forward declaring) @class EOCEmployer 1, 将引入头文件的实际尽量延后,只在确有需要时才引入,这样就可以减 ...
- C++ 中的模板类声明头文件和实现文件分离后,如何能实现正常编译?
C++ 中的模板类声明头文件和实现文件分离后,如何能实现正常编译? 这个feature叫做Export Template,即外名模板,它的作用在于使得模板代码可依照C/C++语言习惯,将模板声明和实现 ...
- 用javah 导出类的头文件, 常见的错误及正确的使用方法
******************************************************************************** 用javah 导出类的头文件, 常见的 ...
- 在类的头文件里尽量少引入其它头文件 <<Effective Objective-C>>
与C 和C++ 一样,Objective-C 也使用"头文件"(header file) 与"实现文件"(implementation file)来区隔代码.用 ...
- c语言的头文件-不是c++类的头文件?
下面的概述是参考的这篇文章:http://blog.csdn.net/bingxx11/article/details/7771437 c语言编程中也有,也需要头文件, 头文件不只是C++的类才需要! ...
- C++ vector 实现二维数组时, 在类的头文件中定义时遇到"应输入类型符"的问题?
见下,当我在类的声明文件中定义二维vector时,提示我应输入类型说明符; 但是相同的格式定义,在类中将二维vector修改为在源文件中定义就可以顺利通过,并顺利执行打印 打印结果如下: 望大神来解惑 ...
- VS类添加头文件注释
VS2015参考: http://blog.csdn.net/qq395537505/article/details/50853546 修改两个文件,详细信息 VS2010: 找到VS的安装目录 E ...
- 为什么static成员必须在类外初始化,而不能在类的头文件中初始化
为什么static成员必须在类外初始化 为什么静态成员不能在类内初始化 在C++中,类的静态成员(static member)必须在类内声明,在类外初始化,像下面这样. class A { pri ...
- MFC类目录及头文件(转)
类 描述 头文件 CAnimateCtrl 自动化通用控件 afxcmn.h CArchive afx.h CArchiveException afx.h CArray afxtempl.h CAsy ...
随机推荐
- MVC 之Action
下面我要重新温习一下,MVC控制器中的Action方法相关概念: 1.Action方法必须是public,不能是private或者是protected; 2.Action方法不能够被重载: 3.Act ...
- oracle关键字大全--注意不要乱用哦
遇到怀疑可能使用了关键字,就来搜一搜吧 ... Oracle 关键字(保留字) 大全 其实这个东西可以在oracle 上输入一个sql语句就可以得到: select * from v$reserved ...
- jenkins 执行ssh 远程linux执行命令
1.远程机器编写脚本: 脚本名称为: /app/jboss/jboss-as/logs/ALL_SERVICE_STOP.sh 功能为:停止某个服务器某个目录下面的所有应用 #!/bin/bash p ...
- mysql两列合成一列
update manage set mark = concat(mark,remark) select concat(mark,remark) as pp from manage
- RabbitMQ 远程 IP 访问 解决办法 -摘自网络
刚刚安装的RabbitMQ-Server-3.3.5,并且也已经开启了Web管理功能,但是现在存在一个问题: 出于安全的考虑,guest这个默认的用户只能通过http://localhost:1567 ...
- tag标签数据库的设计
方案一: 一个表,里面有个tags字段,存放以空格或逗号分隔的标签.缺点是长度受限,tag个数受限,查询like ‘%abc%’效率低 方案二: 同方案一,支持全文索引,或者用Lucence索引查询 ...
- ISE和Modelsim联合仿真(详细步骤讲解)
ISE和Modelsim联合仿真(转) 地址:http://www.cnblogs.com/feitian629/archive/2013/07/13/3188192.html 相信很多人会遇到过这个 ...
- 使用PM2管理Node.js集群
介绍 众所周知,Node.js运行在Chrome的JavaScript运行时平台上,我们把该平台优雅地称之为V8引擎.不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心 ...
- MySQL 日期计算
MySQL提供了几个函数,可以用来计算日期,常用的例子就是,计算年龄或提取日期部分. 1. 计算年龄: mysql中要想计算一个人的年龄,相当于当前日期的年和出生日期之间的差.如果当前日期的日历年比出 ...
- Android集成银联支付,提示java.lang.UnsatisfieldLinkError错误
尽管解决方法很简单,但还是记录一下吧. 最近做银联支付(Android),官方给的demo是eclipse的.按照官方(https://open.unionpay.com/ajweb/product) ...