抽象和类,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);
- 抽象和类,this,运算符重载
- 类的重载,隐含的this,运算符重载
- 类和对象 , 四个默认成员函数及运算符重载 , 隐含的this指针
- 类和对象(this指针、默认成员函数及运算符的重载)
- 运算符重载,虚函数,纯虚函数和抽象类
- c++ 宏、不可重载运算符、抽象类
- 重载运算符 ++ 和 --
- C#学习日记23---多态性 之 运算符重载、方法重载、抽象类、虚方法
- 运算符重载和普通类
- C#运算符重载和方法重载
- 【C++】重载运算符和重载函数
- C++ 重载运算符和重载函数
- C++ 重载运算符和重载函数
- 类运算符重载
- 运算符重载和字符串
- 不要重载&&和||运算符
- 三元运算符和this
- []运算符的重载和二维数组类的[][]运算符重载
- 优先队列集锦(其实都是水题啦)
- 学习摘录之回文数
- ADV212应用记录
- Move Zeroes问题及解法
- Java String和Date的转换
- 抽象和类,this,运算符重载
- Java中ArrayList和LinkedList区别
- 【设计模式学习】简单工厂模式
- C++ this指针的理解
- 题目1533:最长上升子序列
- AutoFac IoC DI 依赖注入
- 深奥的递归
- 类型转换,动态内存
- 集合框架