抽象和类,this,运算符重载

来源:互联网 发布:店侦探软件下载 编辑:程序博客网 时间:2024/05/20 14:17

抽象和类
(1)C++程序员将接口(类定义)放在头文件中,并将实现方法(类方法的代码)放在源代码文件中;
(2)类名的首字母大写;private 成员函数,编写这个类的人可以使用它,但是编写代码来使用这个类的人不能使用;
(3)内联函数:定义位于声明中的函数将自动成为内联函数;类声明常将短小的函数作为内联函数;
(4)类声明类似于结构声明,可以包括数据成员和函数成员,在私有部分private中声明的成员只能通过成员函数进行访问,在公有部分public中声明的成员可被使用类对象的程序直接访问;

  class classname{   private:                data member declaration;  public:               member function prototypes;};

(5)实现类成员函数,可以在类声明中提供完整的函数定义,而不是函数原型,但是通常的做法是单独提供函数定义(除非函数很小),在中情况下,需要使用作用域解析运算符俩指定成员函数属于哪个类。
(6)构造函数,专门用于构造新的对象,将值赋给它们的数据成员;
默认构造函数:

Stock::Stock(){   company="no name";shares=0;share_val=0.0;total_val=0.0;}Stock first;     //calls default constructor implicitlyStock fitst=Stock();  //calls it explicitlyStock *second=new Stock;   //calls it implicitly

(7)析构函数:当对象过期时,程序自动调用析构函数完成清理工作;析构函数在类名字前面加上~;如:Stock类的析构函数为~Stock();析构函数没有返回类型(连void也没有),也没有参数;如果构造函数使用了new,则必须提供使用delete的析构函数;
如果程序员没有提供析构函数,编译器将隐式的声明一个默认的析构函数,并发现导致对象被删除的代码后,提供默认析构函数的定义;
程序执行析构函数时:由于自动变量存放在栈中,因此最后创建的对象最先被删除,最先创建的对象将最后删除;
(8)C++11列表初始化

Stock hot_tip={"DIDI",100,54.4};Stock jock{“you”};Stock temp{};(9)const 成员函数:void  stock::show()  const ;    //promises not to change invoking object函数定义的开头:void stock::show()  const  //promises not to change invoking object

This指针
方法涉及到两个对象时,使用this指针;一般来说,所有类方法都将this设置为调用他的对象的地址;
如:

const Stock & Stock::topval(const Stock & s)  const{       if(s.total_val>total_val)             return s;        else           return *this;}const Stock *top=stock1.topval(stock2);   //将this指针设置成stock1对象的地址;

类作用域
在类中定义的名称的作用域都为整个类,作用域为整个类的名称在该类中是已知的,在类外是未知的;因此要调用公有函数必须通过对象;在定义成员函数时,必须使用作用域解析运算符;

void Stock::update(double price){.....}

运算符重载
(1)不要返回指向局部变量或临时对象的引用,函数执行完毕后,局部变量和临时变量将消失,引用将指向不存在的数据。
(2)operator+( ),在运算符表示法中,运算符左侧的对象是调用对象,运算符右边的对象是作为参数被传递的对象。
友元函数
(1)创建友元:friend Time operator*(double m,const Time & s);
编写定义:因为它不是成员函数,所以不能使用Time::限定符,不要在定义中使用friend关键字

Time operator*(double m,const Time & s){   Time result;   .......return result;}

(2)要重载<<运算符来显示c_name的对象,可使用一个友元函数:

    ostream & operator(ostream & os,const c_name & obj){    os<<....;   return os;}

如:cout<<trip; //等同于operator<<(cout,trip);

0 0
原创粉丝点击