C++primer plus第10章
1.有关于oop
1.众所周知,oop指是面向对象,何为对象?万物皆对象,一般的对象就是用户,面向用户的桥梁是什么?就是所说的接口,接口是链接程序与对象的桥梁,在汇编语言里即使代表特定方法
2.类
2.1 类内如果不写关键字定义成员,会默认为私有成员,即private;
2.2私有成员只能在共有类内访问
2.3public中函数默认内联,简单说你在public中定义和外部定义的函数都属于内联,或者外部函数前加个inline就算内联
2.4调用类 //基本操作A b ;b.show();
2.5构造函数与析构函数
//假如有类stocks
stock( const string & co , long n , double b ) ; //注意在公有部分,私有麻烦
stock::stock ( const string & co , long n , double b )
{。。。。。。} //外部定义
//附送上列表初始化 //假如类中有私有成员akg
stock::stock ( const string & co , long n , double b ) : a(co) , k(n), g(b) ; // 在公有部分定义时只要这一句话
stock k = stock ("words" , 100L , 192.423) //实现
stock k ={"words" , 100L , 192.423} //c++11列表初始化法
~stock(); //定义析构函数,在public 中
stock::~stock(); //外部定义
{ .. .. .. . .}
2.6 关于析构函数的注意点:
析构函数函数实现在return 0 ; 之前, 所以return后的析构没有意义
2.7const成员函数
void show() const ;//定义时和调用时都要在末尾加上const 略
//如果在定义对象时定义
const stock land = stock (..,..,...) ;
//所有在定义类时的方法全要上const!
2.8 this 指针的使用
this指针的含义就如字面意思,指的是函数当前对象
在类中的使用
const stock &topval (const stock & s ) const ; // 声明
const stock & stock::topval ( const stock & s ) const
{
if(s.total>total) ; //比较当前类中的total值和调用类中的total值大小
return s ;
else
return * this ; //这里的this指的是当前调用对象的地址,解引用就是指当前对象
}
这里说明:
const stock &topval (const stock & s ) const ;
@首先它是双const类型
@@第一个const指的是其函数地址用的const ,所以把地址赋给非const是非法的,解决方法const stock&b = topval;
@@第二个const指的是传参类型,定义后函数体内不能有改变参数类型值的行为,但是按值传递就没有必要加const
@@第三个const修饰的是当前类公有部分的成员,定义后不能调用当前类内公有成员的非const成员
@其次其返回类型为stock& ,也就是返回了一个stock类的引用,这里可以是参数s也可以是*this当前调用对象
@最后外部定义时不要忘了加stock::
2.9对象数组
stock stocks [5] = { stock(…), stock(…) , stock(…), stock(…), stock(…)} ;
访问是按照正常方法stock[1].show() ;
2.10类的作用域之间不会相互干扰
对于定义的对象指针也可以用->方法调用成员函数
2.11类内定义常量
在私有部分定义: enum{ months=12 ; }
或者 : static const int months = 12 ;
2.12
再谈枚举
enum abc { red , blue , yellow } ;
enum class egg { red , blue , yellow } ;//重名解决办法
int main()
{
egg a = egg::blue;//作用域外访问
cout<<int(a) <<endl; //强制转换为int输出
int a = int ( egg :: blue ) ;
cout << a << endl ;//强转为int类型来输出,效果和上面的一样
cout<<blue;
return 0 ;
}
这里谈的枚举主要是类的体现
成员默认只能外部通过作用域运算符::访问