类的声明和实现分离
Person.h
#pragma once
class Person {
private:
	int m_age;
public:
	void setAge(int age);
	int getAge();
	Person();
	~Person();
};
Person.cpp
#include "Person.h"
void Person::setAge(int age) {
	m_age = age;
}
int Person::getAge() {
	return m_age;
}
Person::Person() {
	m_age = 0;
}
Person::~Person() {
}
main.cpp
#include <iostream>
#include "Person.h"
using namespace std;
int main() {
	Person person;
	person.setAge(10);
	cout << person.getAge() << endl; // 10
	getchar();
	return 0;
}
命名空间
命名空间可以用来避免命名冲突。
命名空间不影响内存布局。
#include <iostream>
using namespace std;
namespace qdu {
	int g_age;
	void func() {
		cout << "qdu::func()" << endl;
	}
	class Person {
		int m_age;
		int m_money;
	};
}
void func() {
	cout << "func()" << endl;
}
int main() {
	qdu::g_age = 10;
	qdu::func(); // 输出qdu::func()
	qdu::Person person;
	func(); // 输出func()
	getchar();
	return 0;
}
有个默认的全局命名空间,我们创建的命名空间默认都嵌套在它里面。
#include <iostream>
using namespace std;
namespace qdu {
	int g_age;
	void func() {
		cout << "qdu::func()" << endl;
	}
	class Person {
		int m_age;
		int m_money;
	};
}
void func() {
	cout << "func()" << endl;
}
int main() {
	using namespace qdu;
	g_age = 10;
	qdu::func(); // 输出qdu::func()
	Person person;
	::func(); // 输出func()
	getchar();
	return 0;
}










