
推荐: c ++构造函数
关于构造函数的一些摘要: 1: 构造函数不需要用户调用,但是在创建类的实例时会自动调用. (如果构造函数设置为私有成员,则构造函数不能声明为私有成员函数
2020年腾讯云的7月秒杀活动,折扣非常大! (领取2860元代金券),
地址:
2020年阿里云价格最低的产品,包括优惠券(新老用户均可享受折扣)
地址:
class classname
{
private:
data;
function();
public:
data;
function();//可以将成员函数的定义直接写在类中,作为内联函数(1-5行,简单)
protected:
data;
function();
};
三个访问权限
public: 可以由任何实体访问
受保护的: 仅允许访问此类的子类和成员函数
私有: 仅允许此类的成员函数访问
class的默认权限为private
类的定义通常写在.h文件中,成员函数的定义写在程序文件.cpp中,以将接口与实现分开.
myapp.h,在头文件中定义类
#ifndef MYAPP_H_INCLUDED
#define MYAPP_H_INCLUDED
class Record
{
private: //private成员
char bookname[20]; //数据成员bookname,用于表示图书的名称
int number; //数据成员number,表示图书编号
public: //public成员(构造和析构函数?)
void regist(char *a,int b); //成员函数regist,用于给各数据成员赋值
void show(); //成员函数show,显示各数据成员的值
};
#endif // MYAPP_H_INCLUDED

在myapp.cpp中实现已定义的功能
#include<iostream>
using namespace std;
#include "myapp.h"
void Record::regist(char *a,int b)
{
strcpy(bookname,a);
number=b;
}
void Record::show()
{
cout<<"name is "<<bookname<<endl;
cout<<"number is "<<number<<endl;
}
使用main.cpp类
#include <cstdlib>
#include <iostream>
#include "myapp.h"
using namespace std;
int main(int argc, char *argv[])
{
char a[]="hello";
Record app;
app.regist(a,123);
Record *point;
point=&app;
//访问对象成员的三种方法
app.show();
point->show();
(*point).show();
//可以对对象进行赋值
Record app2;
app2=app;
app2.show();
system("PAUSE");
return EXIT_SUCCESS;
}
输出:
名字是你好
数字是123
名字是你好
数字是123
名字是你好
数字是123
构造函数是与类同名的特殊成员函数. 定义此类的对象时,将自动调用构造函数以初始化该对象. 构造函数不能有返回值,因此不能指定任何返回值类型,包括void. 构造函数的定义主体可以与该类内部或外部的其他成员函数成员相同. 构造函数的定义格式为:
类名(参数说明)
{函数体}
定义对象后,系统会自动调用构造函数为该对象分配相应的资源. 当对象用完时,需要在对象消失之前释放这些系统资源. 析构函数是该类的特殊成员函数. 它的函数名在类名的前面加上〜. 它没有返回值,没有参数,不能任意调用,也没有重载. 仅在类对象的生存期结束时,系统才会自动调用. 定义析构函数的方法是:

〜类名()
{函数体}
销毁对象的顺序与创建对象的顺序相反. 最后构造的物体是第一个被破坏的物体
C ++类构造函数初始化列表:
参数列表初始化: classname(): 对象成员1(参数表1),对象成员2(参数表2)c++类构造函数,...,对象成员n(参数表n)
1. 如果该类的成员是引用,则由于必须给该引用赋予初始值c++类构造函数,因此该引用必须使用初始化列表.
2. 同样,必须为const属性赋予一个初始值,并使用一个初始化列表.
3. 在继承的类中,调用基类的初始化构造函数实际上是首先构造基类对象,并且必须使用初始化列表.
class CExample {
public:
int a;
float b;
//构造函数初始化列表
CExample(): a(0),b(8.8)
{}
//构造函数内部赋值
CExample()
{
a=0;
b=8.8;
}
};
复制构造函数是C ++中引入的新构造函数. 定义复制构造函数的方法是:
类名::类名(常量类名和形式参数)
{函数体}
由此可见:
推荐: [C ++]构造函数
定义对象时,我们想为其数据成员分配值. 这时,我们需要使用构造函数,该构造函数用于初始化对象. 构造函数是类的一种成员函数,它具有一些自己的特殊功能

(1)复制构造函数的名称与类的名称相同,并且只有一个参数,该参数是对类对象的引用.
(2)复制构造函数的功能是通过将相似对象的值复制到新对象以完成新对象的初始化,即使用一个对象来实现对象值的复制. 构造另一个对象
如果程序员没有为所设计的类提供显式的复制构造函数,则系统将自动提供默认的复制构造函数,其功能是: 将对象的数据成员作为参数逐个复制到目标变量,这称为成员级复制(或浅拷贝)
当函数的parameter参数是类的对象时,此类的副本构造函数在传递给该函数时将被自动调用.
如果函数的返回值是该类的对象,则在函数执行后将自动调用复制构造函数.
默认的复制构造函数将现有数据对象的成员一一分配给相同类型的新对象的数据成员. 这是浅表副本,是成员级别的副本. 如果存在指针,则仅复制该指针指向的地址. 两个对象的指针数据指向相同的地址,这可能导致资源管理混乱.
如果要选择并复制具有更改的对象,则需要编写自己的复制构造函数以进行深度复制.
它是在现有类的基础上创建一个新类,使用现有数据类型定义新数据类型,减少代码冗余并提高代码可重用性. 新类继承了原始类,而原始类继承了新类.
继承的类称为基类,通过继承关系定义的新类称为派生类或子类(派生类)
派生类可以派生自多个基类或一个基类,称为多重继承或单继承
派生类不仅具有自己的数据成员和成员函数,还维护从基类继承的数据成员和成员函数;同时,派生类可以重新定义一些继承的函数以满足新的需求<
类派生类名称: 继承方法基类名称
{派生类中的新成员}
三种继承方法
公共继承

保护继承
私有继承
合并结果
在基类中继承模式在子类中
公共与公共继承=>公共
公共和受保护的继承=>受保护的
公共和私有继承=>私有
受保护的和公共继承=>受保护的
受保护和受保护的继承=>受保护的
受保护的和私有继承=>私有
私有和公共继承=>子类无权访问
私有和受保护的继承=>子类无权访问
私有和私有继承=>子类无权访问
私有继承阻止继承继续进行.
推荐: C ++构造函数
ps: 红色字体于2015/7/11更新. 构造函数: 1.功能: 将内存分配给对象并对其进行初始化(即,初始化数据成员). 2.属性: (除了一般成员函数的特征
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-288948-1.html
30秒后到达战场
她168啊