程序设计与算法(三)
C++面向对象程序设计
1
2
C++11特性
九寨沟
统一的初始化方法
int arr [3]{1, 2, 3};
vector iv{1, 2, 3};
map mp{{1, "a"}, {2, "b"}};
string str{"Hello World"};
int * p = new int[20]{1,2,3};
struct A {
int i,j; A(int m,int n):i(m),j(n) { }
};
A func(int m,int n ) { return {m,n}; }
int main () { A * pa = new A {3,7}; }
4
成员变量默认初始值
class B
{
public:
int m = 1234;
int n;
};
int main()
{
B b;
cout << b.m << endl; //输出 1234
return 0;
5
}
auto关键字
用于定义变量,编译起可以自动判断变量的类型
auto i = 100; // i 是 int
auto p = new A(); // p 是 A *
auto k = 34343LL; // k 是 long long
map > mp ;
for( auto i = mp.begin (); i != mp.end (); ++i)
cout << i->first << "," << i->second ;
//i的类型是: map >::iterator
6
auto关键字
class A { };
A operator + ( int n,const A & a)
{
return a;
}
template
auto add(T1 x, T2 y) -> decltype(x + y) {
return x+y;
}
auto d = add(100,1.5); // d是double d=101.5
auto k = add(100,A()); // d是A类型
7
decltype 关键字
求表达式的类型
int i;
double t;
struct A { double x; };
const A* a = new A();
decltype(a) x1; // x1 is A *
decltype(i) x2;