有空就写个C++程序

最近工作变得轻松了很多,有了一些空闲的时间,准备把大学时候的C++抓起来,并且研究研究算法:

第一个C++程序:计算圆的面积,也是看其他的博客写出来的C++程序。

#include<iostream>
#define pi 3.14
using namespace std;

class Circle
{
	public :
		Circle (double radius) {Radius = radius;} //构造函数
		Circle(Circle &C);  //拷贝构造函数:将存在对象的各个成员复制给新定义的对象的相应成员。
		~Circle(){}			//析构函数
		double getArea() const;//const 做什么用?常成员函数,不能改变对象的成员变量,也不能调用类中任何非const成员函数

	private:
		double Radius;
};							//class后面需要有“;”;

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

double Circle::getArea() const {
	return pi*Radius*Radius;
}

int main() {
	int r;
	cout<<"输入圆的半径:r=";
	cin>>r;
	Circle myCircle(r);
	cout<<"圆的面积为"<<myCircle.getArea()<<endl;
	system("pause");
	return 0;
}

很久不写C++了,出现了很多不理解的地方:

1.class完成之后要有“;”;

2.const的用法给忘了,具体参考了

http://blog.csdn.net/Eric_Jo/article/details/4138548

3.拷贝构造函数:这个还是没透彻理解。。关键是没有用过啊。。

4.使用visual stuido时总是看不到运行的结果就关闭了使用system("pause");

const的作用

const是C语言的一种关键字,起受保护,防止以外的变动的作用!可以修饰变量,参数,返回值,甚至函数体。const可以提高程序的健壮性,你只管用到你想用的任何地方。

(一)const修饰参数。const只能修饰输入参数。

1、如果输入参数是指针型的,用const修饰可以防止指针被意外修改。

2、如果参数采用值传递的方式,无需const,因为函数自动产生临时变量复制该参数。

3、非内部数据类型的参数,需要临时对象复制参数,而临时对象的构造,析构,复制较为费时,因此建议采用前加const的引用方式传递非内部数据类型。而内部数据类型无需引用传递。

(二)const修饰函数返回值。

1、函数返回const指针,表示该指针不能被改动,只能把该指针赋给const修饰的同类型指针变量。

2、函数返回值为值传递,函数会把返回值赋给外部临时变量,用const无意义!不管是内部还是非内部数据类型。

3、函数采用引用方式返回的场合不多,只出现在类的赋值函数中,目的是为了实现链式表达。

(三)const+成员函数。任何不修改数据成员的函数都应该声明为const类型,如果const成员函数修改了数据成员或者调用了其他函数修改数据成员,编译器都将报错!

class stack

{

public:

int GetCount(void) const ;

private:

int m_num;

};

int stack::GetCount(void) const

{

m_num++;

}

编译器输出错误信息:error C2166: l-value specifies const object。

(四)const 修饰变量,表示该变量不能被修改。

1、const char *p 表示 指向的内容不能改变

2、char * const p,就是将P声明为常指针,它的地址不能改变,是固定的,但是它的内容可以改变。

3、这种const指针是前两种的结合,使得指向的内容和地址都不能发生变化.

const double pi = 3.14159;

const double *const pi_ptr = &pi;

拷贝构造函数:

有空就写个C++程序

时间: 2024-10-17 21:56:24

有空就写个C++程序的相关文章

不要困在自己建造的盒子里——写给.NET程序员(附精彩评论)

转自:http://kb.cnblogs.com/page/92260/ 此文章的主旨是希望过于专注.NET程序员在做好工作.写好.NET程序的同时,能分拨出一点时间接触一下.NET之外的东西(例如10%-20%的时间),而不是鼓动大家什么都去学最后什么都学不精,更不是说.NET不行或劝大家放弃.NET.恕我愚钝,此主旨在文中表达不够清楚,看评论中很多朋友误解了,特此说明. 另外,本文中的观点并不全部是我个人的想法,相当一部分来自我以前聊过天的某些大牛,他们很多来自微软.百度.腾讯等知名企业,并

写一个ajax程序就是如此简单

写一个ajax程序就是如此简单 ajax介绍: 1:AJAX全称为Asynchronous JavaScript and XML(异步JavaScript和XML),指一种创建交互式网页应用的网页开发技术.     2:基于web标准XHTML+CSS的表示:     3:使用 DOM进行动态显示及交互:     4:使用 XML 和 XSLT 进行数据交换及相关操作:     5:使用 XMLHttpRequest 进行异步数据查询.检索: 程序员应用ajax的途经: 1:.Net下的Ajax

用Java写的爬虫程序

这是一个web查找的根本程序,从命令行输入查找条件(开端的URL.处置url的最大数.要查找的字符串), 它就会逐一对Internet上的URL进行实时查找,查找并输出匹配查找条件的页面. 这个程序的原型来自<java编程艺术>, 为了非常好的剖析,站长去掉了其间的GUI有些,并稍作修改以适用jdk1.5.以这个程序为基础,可以写出在互联网上查找 比如图像.邮件.页面下载之类的"爬虫". 先请看程序运转的进程: D:\java>javac  SearchCrawler

用tornado 写异步回调程序

用tornado,一般都用到它的 AsyncHTTPClient的 fetch.我们可以参考 fetch,使用tornado的特性,写异步回调程序 首先看看 fetch的实现,关键是用了future def fetch(self, request, callback=None, **kwargs): """Executes a request, asynchronously returning an `HTTPResponse`. The request may be eit

向经典致敬,WHY翻写3D图形程序 [开源]

个人认为学习3D图形程序开发,有两套经典教程.D3D的<D3D游戏开发编程基础>也就是红龙那本书.OpenGL的NEHE教程.为向经典致敬,将我之前翻写他们的程序开源. 我所做的工作是将其所有的DEMO集成到一个项目中.所有的DEMO使用同一个渲染设备.这样可以在一个进程中自由地切换DEMO.写这套东西最大的麻烦是,每一个DEMO对渲染设备状态做出的改变,在其退出时需要恢复回去.这看上去很容易,但当出现问题时查起来却很麻烦,因为教程中的DEMO实在是太多了.最常见的问题是渲染效果不对了,这在搞

用vi写一个C 程序

? 1 2 3 4 [email protected]:~# ls 1.txt  3.txt  5.txt   6.py   evilxr      test 2.txt  4.txt  5.txt~  e.txt  evilxr.txt [email protected]:~# vi test.c [email protected]:~# cat test.c #include <stdio.h> int add(int a, int b) { return a + b; } int mai

在android系统上写C语言程序--开机启动该程序不进入安卓系统

今天要写的这篇博文意义重大,也是网上很少有的,这是在我工作中学会的一项技术,当然,它也是由简单的问题组合而来的.如何在安卓中写C语言程序,调试安卓驱动,测试程序的的一项重要技能,下面我就不说废话了,直接说实用的,怎么用这个东西. 关于这个问题,相信很多学Android的都会去关注这个问题,大家普遍会有个这样的疑问:安卓是怎么跑起来的? 最简单的说法,安卓系统是这样加载的: Bootloader------Kernel(对应平台版本的Linux内核)------filesystem文件系统(这个就

刚接触开发板之烧写裸板程序

使用串口操作开发板的前提是开发板上已经有烧好的程序,因此开发板在没有烧好程序时,应先烧写程序.方法有: 1.使用并口工具烧写:接线(参考百问网JZ2440V2开发板使用手册),使用oflash烧写(速度比较慢),可烧写.bin文件,从新上电观察效果.可烧写u_boot. 2.使用openJTAG烧写,接线,使用oflash烧写(oflash烧写完后,会复位开发板). 3.使用Jlink烧写,请看如何烧写S3C2440裸板程序:JLink只支持烧写Nor Flash,不支持Nand Flash.要

Linux内核学习--写一个c程序,并在内核中编译,运行

20140506 今天开始学习伟大的开源代表作:Linux内核.之前的工作流于几个简单命令的应用,因着对Android操作系统的情愫,"忍不住"跟随陈利君老师的步伐,开启OS内核之旅.学习路径之一是直接从代码入手,下面来写一个hello.c内核模块. 说明: 这个路径/usr/src/linux-headers-2.6.32-22/include/linux是引用的头文件. 内核模块固定格式:module_init()/ module_exit(),module函数是从头文件中来的.