C++ 类的相关语法,符号:和::的用法
来源:互联网 发布:淘宝新手开店视频教程 编辑:程序博客网 时间:2024/06/03 20:37
#include <iostream>#include <cmath>using namespace std;//class 派生类名 : 继承方式 基类名//声明了一个类C,类C里声明了一个成员函数void F(),//但没有在类的声明里给出F()的定义,那么在类外定义F()时,//就要写成void C::F(),表示这个F()函数是类A的成员函数。class Point{private: int X,Y;public: Point(int xx=0,int yy=0)//类Point的构造函数 { X=xx; Y=yy; } //拷贝构造函数,Point(Point &p)表示p是point类的一个对象, //而&p则是这个对象的引用(也就是这个对象的地址)。这是拷贝构造函数的规定,不能变。 Point(Point &p); int GetX(){return X;} int GetY(){return Y;}};//表示引用成员函数及变量,作用域成员运算符//例:System::Math::Sqrt()相当于System.Math.Sqrt()//作用域符号::的前面一般是类名称,后面一般是该类的成员名称,//C++为例避免不同的类有名称相同的成员而采用作用域的方式进行区分//如:A,B表示两个类,在A,B中都有成员member。那么// A::member就表示类A中的成员member.// B::member就表示类B中的成员member.Point::Point(Point &p)//拷贝构造函数的实现{ X=p.X; Y=p.Y; cout<<"Point拷贝构造函数被调用!"<<endl;}class Line{private: Point p1,p2; double len;public: Line(Point xp1,Point yp2);//类Line的构造函数 Line(Line &L); double GetLen(){return len;}};//1、初始化列表的作用相当于在构造函数内进行相应成员变量的赋值,但两者是有差别的。//2、初始化的顺序与成员变量声名的顺序相同。//例:class myClass //{ //public : // myClass();// 构造函数,无返回类型,可以有参数列表,这里省去 // ~myClass();// 析构函数 // int a; // const int b; //} //myClass::myClass():a(1),b(1)// 初始化列表 //{ //}//1、//在初始化列表中是对变量进行初始化,而在构造函数内是进行赋值操作。//两都的差别在对于像const类型数据的操作上表现得尤为明显。//我们知道,const类型的变量必须在定义时进行初始化,而不能对const型的变量进行赋值,//因此const类型的成员变量只能(而且必须)在初始化列表中进行初始化,//即下面的代码将会出错: //myClass::myClass() //{ // a = 1;// 没错,效果相当于在初始化列表中进行初始化 // b = 1;// 出错,const变量不能进行赋值操作; //}//2、 //myClass::myClass():b(1),a(b) //{ //}//这样的执行结果a,b各是多少呢?b=1,a=1?不是,b=1而a是个随机数。//这一点是相当重要,一般在初始化列表中进行初始化时,初始化的顺序应与声明的顺序保持一致,//防止出现不必要的错误。Line::Line(Point xp1,Point yp2):p1(xp1),p2(yp2)//初始化列表{ cout<<"Line构造函数被调用!"<<endl; double x=double(p1.GetX()-p2.GetX()); double y=double(p1.GetY()-p2.GetY()); len=sqrt(x*x+y*y);}Line::Line(Line &L):p1(L.p1),p2(L.p2){ cout<<"Line拷贝构造函数被调用!"<<endl; len=L.len;}void main(){ Point myp1(1,1),myp2(4,5); Line line(myp1,myp2); Line line2(line); cout<<"The Length of the line is:"; cout<<line.GetLen()<<endl; cout<<"The Length of the line2 is:"; cout<<line2.GetLen()<<endl;}
0 0
- C++ 类的相关语法,符号:和::的用法
- c#相关符号的用法
- c语言学习笔记(6)注释符号,接续符号和转义符号的用法
- C中“##”符号的用法
- "*" "::" "." ":" "->" c/c++编程中几种符号的用法和说明
- c/c++中#和##链接符号的用法
- C语言中宏定义"#"和"##"符号的用法
- C语言中有符号数和无符号数类型转换的用法深度解析
- C语言中符号常量的用法
- C/C++中&符号的用法
- sublime Emmet的用法及相关语法
- sublime Emmet的用法及相关语法
- Arcengine中关于符号相关类和接口的说明
- 几个和server.mappath相关的符号
- Android的问号?和@符号的用法
- grep的语法和用法
- grep的语法和用法
- 宏定义符号#和##的用法
- Connection:Keep-Alive 和 Transfer-Encoding: chunk
- 引用与指针的区别
- C++ 类的使用
- ZSTU4239-巴比伦花园
- Google Analytics中analytics.js的使用
- C++ 类的相关语法,符号:和::的用法
- [Kaggle] 数据建模分析与竞赛平台介绍
- C++::一道有趣的面试题(关于delete)
- 构造函数与构造函数的继承以及call和apply的区别
- ubuntu开启关闭Mysql
- static关键字的使用
- NOIP2009提高组复赛原题题解——Proking
- win10下caffe快速配置(包括PythonCaffe)+Caffe官方教程中译本及caffe网络模型各层详解教程
- Python cmd进入文件夹目录指令,以安装python第三方库pip为例