C++Primer类学习笔记
1) 静态类成员在类定义之外被初始化,也就是不能放到头文件中。例:
1 // 头文件中 2 class Account { 3 Account(double amount, const string &owner); 4 string owner() {return _owner;} 5 private: 6 static double _interestRate; 7 double _amount; 8 string _owner; 9 }; 10 11 // cpp文件中 12 #include "account.h" 13 double Account::_interestRate = 0.0589;
2)静态数据成员的类型可以是其所属类,而非静态数据成员只能被声明为该类的对象的指针或引用。例:
1 class Bar { 2 public: 3 // ... 4 private: 5 static Bar mem1; // ok 6 Bar *mem2; // ok 7 Bar mem3; // error 8 };
3)有序型的const静态数据成员可以在类体中用一常量值初始化。
有序型原文:integral type。这个地方应该指的是“整值类型”。指char、short、int、long和它们的unsigned版本,不含float和double。
参考:http://blog.csdn.net/xiajun07061225/article/details/6955365
1 // 头文件 2 class Account { 3 // ... 4 private: 5 static const int nameSize = 16; 6 static const char name[nameSize]; 7 }; 8 // 文本文件 9 const int Account::nameSize; // 必需 10 const char Account::name[nameSize] = "Savings Account";
4) 静态成员函数只访问静态数据成员,不能为const和volatile,没有this指针。可以用 类名::静态成员函数名() 来使用。
5) 类成员函数指针格式: 返回值类型 (类名::*函数指针名)(参数); 例: Screen& (Screen::*Action)();
可以使用 typedef Screen& (Screen::*Action)(); // 好难理解。。。
然后下面就可以用Action了 Action default = &Screen::home;
6) 静态类成员函数指针为普通指针。