c++自学笔记

把具有相同属性和相同操作的一些对象抽象为一个类,这些对象都是这个类的实例。封装是一种信息隐藏技术,封装可以将一部分属性和操作隐藏起来,不让使用者使用,另一部分作为类的外部接口。继承是新建的类从已有的类那里得到已有的特征。继承有效的实现了软件的重用,增强了系统的可扩充性。多态是面向对象程序设计的一个重要机制。类有比基本类型更强大的功能,类是数据和函数的封装体;

成员函数对类中数据成员的操作,它描述了类的行为,由于对象的封装性类的成员函数是对类的私有数据成员进行操作的唯一途径。

为了程序的可靠性,一般隐藏数据成员。

#include<iostream.h>

void meet(double x,double y)

{

cout<<"2数的和是";

cout<<x+y<<endl;

}

void meet(char x)

{

cout<<"字符串是: ";

cout<<x<<endl;

}

int main()

{

meet(7.2,5.3);

meet(‘a‘);

return 0;

}

一个类可以没有私有成员,但是不可以没有公有成员。因此设计一个类的时候,一定要有公有成员,它是类的外部接口,为了实现信息隐蔽,就一定要有私有成员。

#include<iostream>

using namespace std;

class Date{

private:

int year;

int month;

int day;

public:

void Set(int a,int b,int c)

{

year=a;

month=b;

day=c;

}

void Display()

{

cout<<"现在时间是"<<year<<"年"<<month<<"月"<<day<<"日"<<endl;

}

};

class shijian{

private:

int hour,minute,second;

public:

void Set(int a,int b,int c)

{

hour=a;

minute=b;

second=c;

}

void Display()

{

cout<<"现在时间是"<<hour<<"时"<<minute<<"分"<<second<<"秒"<<endl;

}

};

int main()    // 主函数

{

shijian a;    // 类的对象可以调用类的公有函数

a.Set(2015,1,17);

a.Display();

return 0;

}

成员函数的实现可以这样做,在类外可以加上作用域:

#include<iostream>

using namespace std;

class Date{

private:

int year;

int month;

int day;

public:

void Set(int a,int b,int c); //成员函数

void Display();              //成员函数

};

class shijian{

private:

int hour,minute,second;

public:

void Set(int a,int b,int c)

{

hour=a;

minute=b;

second=c;

}

void Display()

{

cout<<"现在时间是"<<hour<<"时"<<minute<<"分"<<second<<"秒"<<endl;

}

};

void Date::Set(int a,int b,int c)

{

year=a;

month=b;

day=c;

}

void Date::Display()

{

cout<<"日期为:"<<endl;

cout<<"\t"<<year<<"年";

cout<<month<<"月";

cout<<day<<"日"<<endl;

}

int main()    // 主函数

{

Date a;    // 类的对象可以调用类的公有函数

a.Set(2015,1,17);

a.Display();

return 0;

}

设计一个含有4个整数的类,要求能够求出这4个数的最大值和最小值

#include<iostream.h>

class MaxMin4{

private:

int a,b,c,d;

int Max2(int ,int);

int Min2(int ,int);

public:

void Set(int,int,int,int);

int Max4();

int Min4();

};

int  MaxMin4::Max2(int x,int y)

{

if(x>y)

return x;

else

return y;

}

int  MaxMin4::Min2(int x,int y)

{

if(x<y)

return x;

else

return y;

}

int MaxMin4::Max4()

{

int m,n;

m=Max2(a,b);

n=Max2(c,d);

return Max2(m,n);

}

int MaxMin4::Min4()  // 因为这是求自己类中的最小值

{

int m,n;

m=Min2(a,b);

n=Min2(c,d);

return Min2(m,n);

}

void MaxMin4::Set(int x1,int x2,int x3,int x4)

{

a=x1;

b=x2;

c=x3;

d=x4;

}

int main()

{

MaxMin4 maxmin4;

maxmin4.Set(8,6,5,9);

cout<<"输出这4个数的最大值"<<maxmin4.Max4()<<endl;

cout<<"输出这4个数的最小值"<<maxmin4.Min4()<<endl;

return 0;

}

编一个计算机,用c++实现

#include<iostream.h> //命运由我自己安排,谁也不能做主

class JiSuanQi{

private: int A,B,C;

public:

void Put(int x1,int x2)   //赋值

{

A=x1;

B=x2;

}

void  Display();    //显示

int  addition();  //加法

int substraction();   // 减法

int multiplication();  // 乘法

int division();       //触发

};

void JiSuanQi::Display()   // 显示

{

cout<<"显示A="<<A<<endl;

cout<<"显示B="<<B<<endl;

}

int JiSuanQi::addition()   // 加法

{

C=A+B;

return C;

}

int JiSuanQi::substraction()   // 减法

{

C=A-B;

return C;

}

int JiSuanQi::multiplication()   // 乘法

{

C=A*B;

return C;

}

int JiSuanQi::division()   //除法

{

C=A/B;

return C;

}

int main()    //主函数

{

int x1,x2;

JiSuanQi calculation;

cin>>x1>>x2;

calculation.Put(x1,x2);

calculation.Display();

cout<<"加法为:";

cout<<x1<<"+"<<x2<<"="<<calculation.addition()<<endl;

cout<<"减法为:";

cout<<x1<<"-"<<x2<<"="<<calculation.substraction()<<endl;

cout<<"乘法为:";

cout<<x1<<"*"<<x2<<"="<<calculation.multiplication()<<endl;

cout<<"除法为:";

cout<<x1<<"/"<<x2<<"="<<calculation.division()<<endl;

return 0;

}

对象是c++语言程序设计的基本单位,类描述一类问题的共同属性和行为,对象是类的实例,对象是由类作为类型定义的变量;用类定义了对象之后,对象就具有了类的所有性质。也就是说,类的数据成员就是对象的数据成员,类的成员函数就是对象的成员函数。

要创建一个对象,一般要将对象中的数据成员进行初始化和为对象申请必要的存储空间。c++为对象的初始化提供了必要的机制,可以让用户编写初始化程序,就是构造函数。构造函数由系统自动调用,不能有返回值类型,也不能标为void,构造函数一般声明为公有函数,构造函数可以重载。

不用构造函数定义对象就是自动调用无参数构造函数

#include <iostream>

using namespace std;

class Circle{

private:

float r;

public:

Circle(){   //无参构造

r=0;

}

Circle(float x){   //有参构造

r=x;

}

float peri(){

return 2*r*3.1415;

}

float area(){

return r*r*3.1415;

}

};

int main(int argc, char** argv) {

Circle circle1,circle2(2.0); //无参就不用写了,加括号了

cout<<"circle1"<<endl;

cout<<"周长"<<circle1.peri()<<"面积"<<circle1.area()<<endl;

cout<<"circle2"<<endl;

cout<<"周长"<<circle2.peri()<<"面积"<<circle2.area()<<endl;

return 0;

}

析构函数是对象的生命期结束时要执行的一段程序,用来完成对象被删除前的一些清理工作。析构函数不能有任何返回类型,也不能有void,析构函数是无参,不能重载,一个类只能有一个析构函数。

对象复制是c++程序设计的重要能力。复制构造函数,

具有一般构造函数的特性,它只有一个参数,参数类型是本类对象的引用。起功能应该设计为将已知对象的值复制到正在定义的新的同类型对象。

普通构造函数只在对象创建时被自动调用,而复制构造函数可以在下例情况自动调用。用老的对象定义该类的一个新对象时,如果函数的参数是对象,调用该函数时;

#include <iostream>

using namespace std;

class Point{

private:

float x,y;

public:

Point(){

x=0;

y=0;

cout<<"运行无参的构造函数"<<endl;

}

Point(float x1,float x2){

x=x1;

y=x2;

//cout<<"输出点的坐标 "<<x1","<<x2<<endl;

cout<<"运行有参的构造函数"<<endl;

}

Point(Point &objb){

x=objb.x;

y=objb.y;

cout<<"运行复制函数的构造函数"<<endl;

}

~Point(){

cout<<"执行析构函数"<<endl;

}

void Set(float a=0,float b=0){

x=a;

y=b;

}

void Display(){

cout<<"点的位置是:("<<x<<‘,‘<<y<<")"<<endl;

}

};

int main(int argc, char** argv) {

Point a;

a.Display();

Point b(2.0,2.0);

b.Display();

Point c(a);

c.Display();

a.Set(5,5);

a.Display();

return 0;

}

时间: 2024-11-05 13:45:59

c++自学笔记的相关文章

斯坦福大学机器学习(Andrew [email&#160;protected])--自学笔记

今天学习Andrew NG老师<机器学习>之6 - 6 - Advanced Optimization,做笔记如下: 用fminunc函数求代价函数最小值,分两步: 1.自定义代价函数 function [jVal,gradient] = costFunction(theta)jVal = (theta(1)-5)^2 + (theta(2)-5)^2;gradient = zeros(2,1);gradient(1) = 2*(theta(1)-5);gradient(2) = 2*(the

CSS自学笔记(3):CSS样式表的使用

当浏览器读到一个样式表时,浏览器会根据这个样式表来格式化html文档,从而表现出各式各样的网页. 想要浏览器读到样式表,有三种方法: 1.外部样式表 外部样式表可以理解为.CSS文件.当多个页面使用同一个样式的时候,外部样式表是一个很理想的选择. 在使用外部样式表的情况下,可以通过改变一个文件来改变整个站点的外观,无需在调整html文件,尤其是多个页面使用同一个样式的时候. 每个html页面使用标签<link>来连接外部样式表: <head> <link rel="

python自学笔记

python自学笔记 python自学笔记 1.输出 2.输入 3.零碎 4.数据结构 4.1 list 类比于java中的数组 4.2 tuple 元祖 5.条件判断和循环 5.1 条件判断 5.2 循环 6.使用dict和set 6.1 dict 6.2 set 7.函数的使用 7.1函数返回多个值,同时接受多个值 7.2函数参数的默认值 7.3可变参数的函数 7.4可变个数带参数名的入参 7.5参数类型组合 8.关于函数递归 9.python的高级特性 9.1切片 9.2遍历 9.3列表生

CSS自学笔记(5):CSS的样式

CSS中拥有各种各样的样式表,而基本的样式有背景,文本,字体,链接,列表,表格,轮廓. 一.CSS-背景 CSS中允许用纯色背景,也允许用图片来创建复杂的个性背景. p {background-color: #000;} 是用纯色作为背景.这时你可以定义其他属性,生成不同效果的背景. CSS中也可以用图片作为背景,这是就需要使用background-image属性了,如果属性值为一个URL值,并且图片文件存在,那么就可以看到用该图片做为背景的网页了 body {background-image:

Android自学笔记-16-任务栈

题目链接:http://acm.fzu.edu.cn/problem.php?pid=2170 贴个baka爷的代码留念.. 数据出的有问题,输入的字符串长度不超过1000 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<map> #include<queue> #incl

Hadoop自学笔记(一)常见Hadoop相关项目一览

本自学笔记来自于Yutube上的视频Hadoop系列.网址: https://www.youtube.com/watch?v=-TaAVaAwZTs(当中一个) 以后不再赘述 自学笔记,难免有各类错误纰漏.请看者谨慎. Hadoop的使用还有大数据时代什么的就不说了.Hadoop不是一个单独的工具,而是一整个生态系统.包括一系列工具.所以首先要先介绍一下Hadoop相关的工具和各类概念,是以后经常会接触到的. 1. Hadoop Core a) HDFS  Hadoop分布式文件系统,Hadoo

jQuery:自学笔记(5)——Ajax

jQuery:自学笔记(5)--Ajax 使用Ajax快捷函数 说明 出于简化AJAX开发工作的流程,jQuery提供了若干了快捷函数. 实例 1.显示 test.php 返回值(HTML 或 XML,取决于返回值). $.get("test.php", function(data){   alert("Data Loaded: " + data); }); 2.向页面 test.php 发送数据,并输出结果(HTML 或 XML,取决于所返回的内容): $.pos

jQuery:自学笔记(2)——jQuery选择器

jQuery:自学笔记(2)--jQuery选择器 基本选择器 说明 jQuery的基本选择器与CSS的选择器相似: 实例 标签选择器 //使用标签选择器更改字体大小 $(div).css('font-size','18px') ID选择器 //使用id选择器改变背景颜色 $('#div1').css('background','red'); 说明:ID选择器中,ID前面必须加一个#,以表明这是一个jQuery的ID选择器. 类选择器 //使用类选择器设置字体样式 $('.spanclass')

Java自学笔记(三)——输入

因为最近学的内容实际操作比较多,所以新的笔记就用代码为主体吧! 本回主要内容是输入,Java中主要用Scanner类和BufferedReader.总体来说不难,但有些细节可以总结,看代码: import java.io.*; import java.util.Scanner; public class ioTest { public static void main(String[] args) throws Exception { //Scanner提供了多种构造器,不同的构造器可以接受文件

CSS自学笔记(10):CSS3盒子模型

CSS3为CSS技术的升级版本.最新版本. 就CSS而言,它是一个模块,是一个庞大而又复杂的模块,但是在CSS3中,将这一个庞大的模块分解为一个个容易理解的同时又很精简的小模块,同时CSS3中又添加了一些新的模块,所以CSS3朝着模块化的方向发展. CSS3中比较重要的模块有:选择器.盒子模型.背景和边框.文字特效.2D/3D转换.动画.多列布局.用户界面. CSS3的选择器常用的和CSS选择器差不多. CSS3 盒子模型 盒子模型是CSS3很重要的一个模型,它是指元素以何种方式显示以及元素间如