类的声明和实现分离
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;
}