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

抽象和类
(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 implicitly
Stock fitst=Stock();  //calls it explicitly
Stock *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
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值