C#和C++的部分面向对象方式类似,只记录不同点。
下面是C++类的定义方式与C++关键字public和private的表达方式:
class Box { private: // 私有成员 public: // 公共成员 };
在类内定义的函数被隐式声明为内联函数
如果没有给指针类型和基本类型成员赋值(或者初始化),他们将会包含垃圾值
如果已经定义了一个构造函数,无论怎样,编译器将不会再去构造一个默认无参
这样做能初始化一个对象:
Box a; // a被初始化了
可以在类内用Default创建一个默认无参的构造函数:
Box() = default;
在类内用default创建的构造函数,在源文件不能有定义
所有参数都有默认值的构造函数仍然算作默认构造函数
可以用初始化列表来初始化成员变量:
Box::Box(double lv, double wv...) : length = lv, width = wv... { //code-in }
构造函数只有一个参数(或者只有第一个参数没有默认值的)是有问题的,编译器可以用这种构造函数吧参数类型转换为类类型
可以使用explicit关键字限定:
explicit Cube(double aside);
委托构造函数可以如下表达:
Box::Box(double lv, double wv...) : length = lv, width = wv... { //code-in } Box::Box(double side) : Box(side, side...) { //code-in }
副本构造函数的实参必须是引用(最好为const引用)
返回this指针需要将函数类型转为指针类型
可以依靠this指针构造一个方法链:
// 所有的成员函数都为指针类型且返回this指针 myBox.setLength(20.0).setwidth(40.0).setHeight(10.0);
友元可以访问类中的所有对象,但破坏了OOP原则(封装)
这里懒得写解释了直接上全部实例代码:
点我打开
之后可能会多写一些博客笔记,顺便在上面登记一些程序(轮子)和习题(**算法~)^_^