类和对象
1语言规则
在C++中使用自定义类型,有一些基本规则,这是最基础的,简单可概括为:分清编译器的责任和程序员的责任。
编译器:
若程序员未编写任何构造函数,那么,编译器会提供默认构造函数、默认拷贝构造函数、默认赋值操作符。
默认构造函数: 在执行时会首先调用父类的无参构造函数,再调用自己对象成员变量的无参构造函数。
默认拷贝构造函数:在执行时会调用父类的拷贝构造函数,再调用自己成员的拷贝构造函数。
默认赋值操作符: 在执行时会调用父类的赋值操作符,再调用自己成员的赋值操作符。
程序员:
根据需要编写自己的类。
当父类或自己对象成员变量不存在无参构造函数时,编译器就不知道怎么初始化它们,这时,
程序员需在初始化列表或构造函数体内编写代码,保证初始化正常。
另外,非静态内置类型必须得程序员手动编写代码进行初始化。
类的静态成员变量关联于类,静态变量必须在源文件中进行定义才能分配内存,静态变量会在main函数执行之前被编译器初始化为0。
当类中存在指针或引用成员变量时,最好自己编写拷贝构造函数和赋值操作符,或禁止外部调用拷贝、赋值。
2应用
编写类,要有清晰的核心目的。
类将数据和操作封装在了一起,这给编写可维护、可扩展、可复用软件提供了最强大的支持:
1 类的封装让代码复用更容易。
2 类的封装,让程序员在编写、测试完这个类后就从中解脱出来,可以专注于软件其它的部分。
3 封装将复杂算法封装在类里面,使以后替换更优秀算法变得容易,不必为此修改外部代码。
4 如果bug是针的话,类的封装便使测试变得像在水杯里捞针,而不是在大海里。
浙公网安备 33010602011771号