您的位置:首页 > 编程语言 > C语言/C++

每天一个C++小程序(求圆面积)

2017-03-02 12:42 232 查看

如何在Ubuntu下编译C++程序

g++  -c  filename(当前路径.cpp文件)                    //只编译,不练接,生成.o 文件

g++   filename(当前路径.cpp文件)                       //既编译,同时链接,生成可执行文件(默认是a.out)

g++   filename  -o  test                                           //既编译,同时链接,生成可执行文件名为test

运行执行文件        一般这样写    ./a.out

gcc与g++的区别

编译阶段是形同的,链接阶段g++默认链接C++库,gcc没有。所以一般情况下用gcc编译c文件,同g++编译cpp文件。

但是也可以用gcc编译cpp文件,只是后面需要加一个选项-lstdc++,作用是链接c++库。还可以用g++编译c文件。

C++编写求圆面积的程序

#include <iostream>
#define OK 1
#define PI 3.1415

using namespace std;

class Circle
{
public:
Circle(int radius) { Radius = radius; }
Circle(Circle &C);
~Circle() {}
int GetR() { return Radius; }
double GetArea() const;

private:
int Radius;
};

Circle::Circle(Circle &C)
{
C.Radius = Radius;
}

double Circle::GetArea() const
{
return PI * Radius * Radius;
}

int main()
{
int radius = 2;
Circle myCircle(radius);
std::cout<<"求得半径位2的默认圆的面积为:"<<myCircle.GetArea()<<endl;

std::cout<<"请输入另一个圆的半径radius = ";
std::cin>>radius;
Circle youCircle(radius);
std::cout<<"求得半径为"<<radius<<" 的圆的面积为:"<<youCircle.GetArea()<<endl;

return OK;
}


运行结果:

$g++ CircleArea.cpp -o CircleArea.out
$./CircleArea.out
求得半径位2的默认圆的面积为:12.566
请输入另一个圆的半径radius = 5
求得半径为5 的圆的面积为:78.5375

复制构造函数

复制构造函数是一种特殊的构造函数,具有一般构造函数的所有特征,其形参是本类的对象的引用。其作用是使用一个已经存在的对象(由复制构造函数的参数指定),去初始化同类的一个新对象。

       下面是声明和实现复制构造函数的一般方法:

       Class类名 {

                 public:

                         类名(形参表);   //构造函数

                        
类名(类名 &对象名);   //复制构造函数

       }

      类名::类名(类名 &对象名)    //复制构造函数的实现

     {      函数体     }

复制构造函数在下面三种情况中会被调用:

1.当用类的一个对象去初始化该类的另一个对象时:

      int  main()

     {

             Point a(1, 2);

             Point b(a);       //用对象a初始化对象b,复制构造函数被调用

             Point c = a;       //用对象a初始化对象c,复制构造函数被调用

             Cout<<b.getX()<<endl;

             Return 0;

      }

2.如果函数的形参是类的对象,调用函数时,进行形参和实参结合时:

      void f(Point p)

      {

             Cout<<p.getX()<<endl;

      }

      int  main()

      {

             Point a(1, 2);

             f(a); //函数的形参为类的对象,当调用函数时,复制构造函数调用

             return 0;

      }

3.如果函数的返回值是类的对象,函数执行完成返回调用者时:

       Point g() {

             Point a(1, 2);

             return a;

       }

       int  main() {

              Point b;

              //函数的返回值是类的对象,返回函数值时,调用复制构造函数

              b = g();

              return 0;

       }

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: