标签:ace lin eve ssi 版本 func c++ line const
int i = 0;
int *const p1 = &i; // top-level
const int c1 = 42; // top-level
const int *p2 = &ci; // low-level
const int *const p3 = p2; // low-level (left) & top-level (right)
const int &r = ci; // both low-level
constexpr int mf = 20;
typedef double wages; // classic
typedef wages base, *p;
using SI = Sales_item; // C++11
typedef char *pstring;
const pstring cstr = 0; // cstr是指向char的常量指针
const pstring *ps; // ps是一个指针,它的对象是指向char的常量指针
const char *cstr = 0; // [注意]与 const pstring cstr 不同!
decltype(f()) sum = x;
decltype(i) e; // 正确
decltype((i)) d; // 错误, d 是 int&
using int_array = int[4];
typedef int int_array[4];
int (*func(int i))[10];
auto func(int i) -> int(*)[10]; // lamabda
const string &shorterString(const string&, const string &);
// 使用const_cast重载原函数的非常量版本
string &shorterString(string &s1, string &s2)
{
auto &r = shorterString(
const_cast<const string&>(s1),
const_cast<const string&>(s2));
return const_cast<string&>(r);
}
typedef string::size_type sz;
string screen(sz, sz, char = ' ');
string screen(sz, sz, char = '*'); // 错误
string screen(sz = 24, sz = 80, char); // 正确
sz wd = 80;
char def = ' ';
sz ht();
string screen(sz = ht(), sz = wd, char = def);
string window = screen(); // 调用 screen(ht(), 80, ' ');
关键字 mutable
返回*this表示将对象作为左值返回,意味着可以将一系列操作连接在一条表达式中
myScreen.move(4, 0).set('#');
class Screen {
public:
Screen &display(std::ostream &os) {
do_display(os); return *this;
}
const Screen &display(std::ostream &os) const {
do_display(os); return *this;
}
}
Screen myScreen(5, 3);
const Screen blank(5, 3);
myScreen.set('#').display(cout); // 非常量版本
blank.display(cout); // 常量版本
一个委托构造函数使用它所属类的其他构造函数执行它自己的初始化过程
istringstream record(line);
record >> info.name;
ostringstream formatted;
formatted << anyString << endl;
cout << formatted.str();
以下等价
c.emplace_back(args);
c.push_back(T(args));
stack<int, vector<int>>stk; // 使用vector构造stack适配器
back_inserter
插入迭代器for_each
标签:ace lin eve ssi 版本 func c++ line const
原文地址:http://www.cnblogs.com/KaitoHH/p/7497591.html