一个简单的内部类

来源:互联网 发布:淘宝网电影 编辑:程序博客网 时间:2024/05/14 11:48

#ifndef MYTIME_H_#define MYTIME_H_#include <iostream>namespace My{class MyTime{private:int hour;int min;int sec;public:class Date{private:int year;int month;int day;public:Date(int y = 1990, int m = 1, int d = 1): year(y), month(m), day(d) {}void printDate(){std::cout << year << ":" << month << ":" << day << std::endl;}};private:Date date;public:MyTime(int h = 8, int m = 0, int s = 0): hour(h), min(m), sec(s){}void printTime();};};#endif /* MYTIME_H_ */



test.cc

#include <iostream>#include <string>#include "mytime.h"//;;;/*class Date{std::string d;public:Date():d("2012.1.1\n"){}void printDate(){std::cout << d << std::endl;}};*/int main(){My::MyTime t;t.printTime();//Date d;//d.printDate();return 0;}

如果将注释符号去掉, 也可以运行。  这是Date d, 寻找的是最外层空间的类Date

 

而如下的代码:

#include <iostream>#include <string>#include "mytime.h"//;;;class Date{std::string d;public:Date():d("2000.10.10\n"){}void printDate(){std::cout << d << std::endl;}};int main(){class Date{std::string d;public:Date():d("2012.1.1\n"){}void printDate(){std::cout << d << std::endl;}};My::MyTime t;t.printTime();Date d;d.printDate();return 0;}

的运行结果为:

1990:1:1
8,0,0
2012.1.1

此时Date d中定义的d, 是main()里的class Date;