C++的编程问题01

一、
#include <iostream>
using namespace std;

class B:
{
public:
static void Add()
{ i++; }
static int i;
void out()
{ cout<<"static i="<<i<<endl;}
};

请问上面的例程中,为什么可以先定义用到了i的函数Add(),然后才定义i?

二、
//Point.h
#ifndef POINT_H
#define POINT_H

class Point
{
friend ostream &operator<<(ostream &, const Point &);
public:
Point(int = 0, int = 0);
void setPoint( int, int );
int getX()const
{ return x; }
int getY()const
{ return y; }
protected:
int x, y;
}

请问:
1、friend ostream......那句话该怎么理解?我只看出里面用了友元。。。
2、 int getX()const
{ return x; }
int getY()const
{ return y; }
这样写的目的是什么,为什么要通过函数来返回?
const放在最后意味着什么?

求大神指教,谢谢!!!

一、
#include <iostream>
using namespace std;
class B:
{
public:
static void Add()
{ i++; }
static int i;
void out()
{ cout<<"static i="<<i<<endl;}
};
上面的例程中,为什么可以先定义用到了i的函数Add(),然后才定义i?
因为类的成员的定义可以以任意的顺序。

二、
//Point.h
#ifndef POINT_H
#define POINT_H
class Point
{
friend ostream &operator<<(ostream &, const Point &);
public:
Point(int = 0, int = 0);
void setPoint( int, int );
int getX()const
{ return x; }
int getY()const
{ return y; }
protected:
int x, y;
}
请问:
1、friend ostream......那句话该怎么理解?
那是对<<(输出运算符)的重载,重载成了友元函数。重载后可以直接用<<将Point对象输出,如:
Point p(1,2);
cout<<p;

2、 int getX()const
{ return x; }
int getY()const
{ return y; }
这样写的目的是什么,为什么要通过函数来返回?
这样写的目的是将数据隐藏(这是面向对象编程的核心思想之一),降低数据与数据之间的耦合性,而对数据的访问只能通过接口(数据存取函数)来实现。

const放在最后意味着什么?意味着这个函数是常成员函数,它不能修改对象的任何一个数据成员的值。比如:在getX()内部不能修改x的值,当然也不能修改y的值。追问

friend ostream &operator<<(ostream &, const Point &);
1、&operator 是取地址了吗?
2、(ostream &, const Point &) 这里我可以理解为创建了两个参数吗?还是别的意思呢?能详细地说一下吗? 谢谢了!

追答

对,但意思还是那个意思。

温馨提示:答案为网友推荐,仅供参考
相似回答