typedef
三种目的:
1. 为了隐藏特性的实现,强调使用类型的目的
2. 简化复杂的类型定义,使其更容易理解
3. 允许一种类型用于多个目的,同时使得每次使用该类型的目的明确(API的设计中,非常常见)
枚举
(一)定义和初始化
#include<iostream>
#include<string>
int main()
{
enum open_modes{input, output, append};
std::cout << input << output << append << std::endl;
return 0;
}
(二)枚举成员是常量
可以为一个或者多个枚举成员提供初始值,用来初始化枚举成员的值必须是一个常量表达式
值可以重复,不唯一
#include<iostream>
int main()
{
enum open_modes{input=1, output, append=1};
std::cout << input << output << append << std::endl;
return 0;
}
(三)每个枚举都是一种独特的类型
#include<iostream>
int main()
{
enum open_modes{input=1, output, append=1};\
open_modes om = input;
std::cout << input << output << append << std::endl;
std::cout << om << std::endl;
return 0;
}
类类型(简要概念)
C++中,通过定义类来定义数据类型。
1. 每个类都有一个接口(interface)和一个实现(implementation),接口指的是public部分,实现是外界看不到的private数据和一些不供外部使用的函数
2. 简单定义一个类
#include<iostream>
#include<string>
class Sales_item{
public:
void assignment(std::string s, unsigned u, double r)
{ isbn = s; units_sold = u; revenue = r; }
void output()
{
std::cout << isbn << '\t' << units_sold << '\t' << revenue << std::endl;
}
private:
std::string isbn;
unsigned units_sold;
double revenue;
};
int main()
{
Sales_item si;
si.assignment("978-7-115-14554-3", 100, 30.5);
si.output();
return 0;
}
3. 操作称为成员函数,数据称为数据成员。
定义数据成员时一般不初始化,而在构造函数完成此初始化
4. 类标号:public、private、protected
5. 用class和struct关键字定义类的唯一区别是默认访问级别:struct默认public,class默认private