猿问

c++中如 类名 类名::对象 是什么意思

#include<iostream>
using namespace std;
class CComplex
{
public:
CComplex(double,double);
CComplex(CComplex &c);
CComplex add(CComplex &x);
void print();
private:
double real;
double image;
};
CComplex::CComplex(double r=0.0,double i=0.0)
{
real=r;
image=i;
cout<<"调用两个参数的构造函数"<<endl;
}
CComplex::CComplex(CComplex &c)
{
real=c.real;
image=c.image;
cout<<"调用拷贝构造函数"<<endl;
}
void CComplex::print()
{
cout<<"("<<real<<","<<image<<")"<<endl;
}
void f(CComplex n)
{
cout<<"n=";
n.print();
}
CComplex CComplex::add(CComplex &x) (这一句 不懂为何 类名 类名::对象)
{
CComplex y(real+x.real,image+x.image);
return y;
}
int main()
{
CComplex a(3.0,4.0),b(5.6,7.9);
CComplex c(a);
cout<<"a=";
a.print();
cout<<"c=";
c.print();
f(b);
c=a.add(b);
c.print();
system("pause");
}

千巷猫影
浏览 1461回答 4
4回答

交互式爱情

就是操作不同类中的对象,就要用域操作符。::是C++里的“作用域运算符”。比如声明了一个类A,类A里声明了一个成员函数void f(),但没有在类的声明里给出f的定义,那么在类外定义f时,就要写成void A::f(),表示这个f()函数是类A的成员函数。:: 一般还有一种用法,就是直接用在全局函数前,表示是全局函数。当类的成员函数跟类外的一个全局函数同名时,在类内定义的时候,打此函数名默认 调用的是本身的成员函数;如果要调用同名的全局函数时,就必须打上::以示区别。比如在VC里,你可以在调用API函数时,在API函数名前加::。

weixin_慕斯卡5464189

CComplex CComplex::add(CComplex &x) (这一句 不懂为何 类名 类名::对象)前面的CComplex 应该表示的是要返回的类型是CComplex 类型第二个CComplex 应该才是表示作用域不知道理解的对不对

互换的青春

:在C++中叫做域操作符类函数的实现可以在类的定义中,也可以在定义中只声明函数,而在定义外实现函数,那么实现时要告诉编译器实现的是哪个类的函数,就要用到域操作符::,类名::成员函数的这种写法就是说明当前实现的函数是::前面那个类的成员函数,不知道有没有讲清楚
随时随地看视频慕课网APP
我要回答