孙鑫MFC视频第二节代码练习(一)类和结构体,类的定义和声明

来源:互联网 发布:macbookpro必装软件 编辑:程序博客网 时间:2024/04/30 15:16
#include<iostream.h>//2014.9.6//c语言和c++的结构体不同,c++的结构体中可以放函数,但默认是public类型的。//c++中结构体和类通用,唯一的区别就是类默认的类型是private,若想改为公有的,必须用//public声明,而结构体默认的类型为public。结构体也可以声明为私有的。struct Point1{int x;int y;void output(){cout<<"x is "<<x<<"\ty is "<<y<<endl;}};class Point2{public://若此处去掉public,则会报错int x;int y;void output(){cout<<"x is "<<x<<"\ty is "<<y<<endl;}};struct Point3{private://若此处去掉public,则会报错int x;int y;void output(){cout<<"x is "<<x<<"\ty is "<<y<<endl;}};int main(){Point1 pt1;pt1.x = 5;pt1.y = 7;cout<<"pt1.x is "<<pt1.x<<"\tpt1.y is "<<pt1.y<<endl;pt1.output();Point2 pt2;pt2.x = 5;pt2.y = 7;cout<<"pt2.x is "<<pt2.x<<"\tpt2.y is "<<pt2.y<<endl;pt2.output();Point3 pt3;pt3.output();//错误,output在private的范围之类,因此是私有的,不能被对象调用。//错误pt3.x = 5;//错误pt3.y = 7;//错误cout<<"pt3.x is "<<pt3.x<<"\tpt3.y is "<<pt3.y<<endl;//错误}
1、结构体的大括号后面一定不要忘记加分号。
2、c和c++结构体的区别就是c的不能放函数,c++的可以放。
3、举例:面向过程——开车这个方法,把车作为参数传进来,去开这个车。
面向对象——开车这个方法,是汽车这个类本身的方法。我们去调用汽车的调用的方法。

4、F5运行到断点,F10单步执行。
5、类外的构造函数必须在类中声明,包括没有参数的构造函数。
出现的错误:构造函数只在类外定义,但是没有在类中声明。

6、如果已经为一个类定义了有参数的构造函数,系统就不会为该类定义无参数的构造函数了。
7、在析构函数的定义和声明处,以及程序结尾用F9插入断点,会发现程序根本没有走头文件,说明头文件只是一个引导之类的,不参与编译。而且,程序结束后,会先调用析构函数,后关闭对话框。
出现的错误:只在类中声明,但是没有在类外定义

8、析构函数:
A、不允许有返回值
B、不允许带参数

C、一个类只有一个析构函数

2_2_1.h#ifndef _2_2_1_H_#define _2_2_1_H_class Point{private:int x;int y;public:void output();};#endif2_2_1.cpp#include"iostream.h"#include"2_2_1.h"void Point::output(){cout<<"x:"<<x<<"  y:"<<y<<endl;}void main(){Point pt;pt.output();//输出很大的负数,因为没有初始化变量。}2_2_1.h#ifndef _2_2_1_H_#define _2_2_1_H_class Point{private:int x;int y;public:void output();Point();};#endif2_2_1.cpp#include"iostream.h"#include"2_2_1.h"void Point::output(){cout<<"x:"<<x<<"  y:"<<y<<endl;}void Point::Initial(){x = 5 ;y = 7 ;}Point::Point(){x = 6;y = 6;}void main(){Point pt;pt.output();//构造函数的效果和Initial函数的效果是一样的pt.Initial();//类似于自己买零件,再用自己买的零件组装电脑。pt.output();//输出5和7}

2_2_2.h//析构函数#ifndef _2_2_1_H_#define _2_2_1_H_class Point{private:int x;int y;public:void output();Point();};#endif2_2_2.cpp//析构函数#include"iostream.h"#include"2_2_1.h"void Point::output(){cout<<"x:"<<x<<"  y:"<<y<<endl;}void Point::Initial(){x = 5 ; y = 7 ;}Point::Point()//类外的构造函数必须在类中声明,包括没有参数的构造函数。{x = 6;y = 6;}Point::~Point(){}void main(){Point pt;pt.output();//构造函数的效果和Initial函数的效果是一样的pt.Initial();//类似于自己买零件,再用自己买的零件组装电脑。pt.output();//输出5和7}


0 0
原创粉丝点击