面向菠菜平台一条龙, 需要的请搜索 http://dsluntan.com/forum.php 对象最大的特征就是提出了类和对象的概念. 在以面向对象的方式开发应用程序时, 将遇到的各种事物抽象为类, 类中通常包含数据和操作数据的方法, 用户通过实例化类对象来访问类中的数据和方法.
类的定义:
class/struct 类名 // 类头
{数据和方法的定义}; // 类体
1, 类体中的数据描述的是类的特征(属性), 方法是类中定义的函数, 描述类的行为.
2, 使用 class 和 struct 的唯一区别是: 使用 class 定义的类在没有被强制限定的话, 其成员时私有的, 既不能被外部调用. 使用 struct 的话, 其成员是公共的, 可以被外部调用.
3, 类体由花括号包围形成一个新的作用域. 类内部定义的名字必须唯一, 但是可以与外部定义的名字重复.
4,C++11 新标准规定, 可以为数据成员提供一个类内初始值. 在创建对象时, 类内初始值将用于初始化数据成员, 没有初始值的成员将被默认初始化. 但是需要注意: 类内初始值要么放在等号右边, 要么放在花括号内, 记住不能使用圆括号.
5, 所有成员的声明都必须在类的内部, 但是成员函数体的定义则既可以在类的内部也可以在类的外部. 当定义在类的外部时函数名之前需要加上类名和作用域运算符 (::) 以显式的指出该函数是对应类的成员函数.
6, 定义在类内部的函数是隐式的 inline 函数.
7, 可以在定义类的同时定义定义对象
class p{int a;int b();}p1,p2;
也可以先定义类, 然后再定义对象. 这里需要注意: 与 C 中的结构体等对象的定义不同, C++ 允许直接使用类名而不需要之前的 class 或 struct 限定符, 而 C 中限定符是必不可少的, 它甚至是类型名的一部分.
- C++: struct p{int a;int b;};
- p p1;
- C: struct p{int a;int b;};
- struct p p1;
8, 使用访问说明符可以加强类的封装性:
8.1, 定义在 public 说明符之后的成员在整个程序内可被访问, public 定义类的接口.
8.2, 定义在 private 说明符之后的成员可以被类的成员函数访问, 但是不能被使用该类的代码访问也不能被派生类访问, private 部分封装 (隐藏) 了类的实现细节.
8.3, 定义在 protected 之后的成员被称为保护成员, 该成员只能在该类和该类的派生类 (子类) 中访问.
8.3, 访问说明符的优先级是高于使用 class 和 struct 的默认访问属性的.
8.4, 一个类可以包含任意数量的访问说明符.
9, 在定义类的方法 (成员函数) 时, 如果不需要在方法中修改类的数据成员, 建议在方法声明和定义的参数列表后都使用 const 关键字, 表示用户不能再该方法中修改类的数据成员, 这样的成员函数称为常亮成员函数. 常量对象, 以及常量对象的引用或指针都只能调用常量成员函数.
记住, 这里的 const 是个顶层 const, 也就是说如果类中包含指针成员, 此时这个指针就是个常亮指针, 不能改变指向, 但可以改变所指元素的值.
- class p
- {
- int a(int a,int b) const;
- };
- int a(int a,int b) const
- {
- // 不能修改类成员的值
- }
来源: http://www.bubuko.com/infodetail-2740039.html