上海建设交通网站,莒县做网站,网站制作中企动力公司,高质量的常州网站建设面向对象编程的优势
相比于分而治之的结构化程序设计#xff0c;强调大处着眼的面向对象程序设计的思想#xff0c;更适合于开发大型软件。得益于数据抽象、代码复用等面象对象的固有特征#xff0c;软件开发的效率获得极大的提升#xff0c;成本却大幅降低。
面向对象三…面向对象编程的优势
相比于分而治之的结构化程序设计强调大处着眼的面向对象程序设计的思想更适合于开发大型软件。得益于数据抽象、代码复用等面象对象的固有特征软件开发的效率获得极大的提升成本却大幅降低。
面向对象三大特征封装、继承、多态。
结构体
#include iostream
using namespace std;struct Compleac{double i;double r;void init(double rr, double ii) {i ii;r rr; }double real() {return i;}double image() {return r;}
};int main(int argc, const char *argv[])
{Compleac a;a.init(3,5);cout a.real() a.image() i endl;return 0;
}将数据和操作数据的函数包装在一起的主要目的就是实现的封装和隐藏。隐藏就是不让结构体外的函数直接修改数据结构中的数据只能通过结构的成员函数对数据进行修改。但上面的代码显然没能做到这一点。为此C中新增了3个访问权限限定符用于设置结构体中数据成员和数据成员的访问权限。
public 公有成员函数、数据可悲任何函数访问结构体内和结构体外
protected 与继承有关
private 私有成员函数、数据只能被结构体内部函数访问。
#include iostream
using namespace std;struct Compleac{
private:double i;double r;
public:void init(double rr, double ii) {i ii;r rr; }double real() {return i;}double image() {return r;}void set_real(double value) {i value;}void set_image(double value) {r value;}
};int main(int argc, const char *argv[])
{Compleac a;
// a.i 8;//因为private缘故无法直接修改a.init(3,5);a.set_real(8);a.set_image(10);cout a.real() a.image() i endl;return 0;
}类
struct还是容易和传统C语言中的结构混淆C中引进了功能和struct相同但更安全的数据类型:类。更安全是指结构体将所有成员都默认为public不够安全类中成员默认为private权限。
//语法格式
class 类名 {
private:成员类型成员类型
public:成员数据成员数据
protected:成员数据成员数据
};//特别注意不要忘了
#include iostream
using namespace std;class Compleac{
private:double i;double r;
public:void init(double rr, double ii) {i ii;r rr; }double real() {return i;}double image() {return r;}void set_real(double value) {i value;}void set_image(double value) {r value;}
};int main(int argc, const char *argv[])
{Compleac a;
// a.i 8;//因为private缘故无法直接修改a.init(3,5);a.set_real(8);a.set_image(10);cout a.real() a.image() i endl;return 0;
}#include iostreamusing namespace std;class stu {private:string m_name;int age;int num;
public:void set_name(const string name) {m_name name;}void set_age(int s_age) {age s_age;}void set_num(int s_num) {num s_num;}void who() {cout 我叫 m_name 我今年 age 我的学号是 endl;}
};int main(int argc, const char *argv[])
{stu s;s.set_name(小明);s.set_age(18);s.set_num(8499);s.who();return 0;
}