说说你对构造函数的理解?

构造函数:对象创建时,利用特定的值构造对象(不是构造类),将对象初始化(保证数据成员有初始值),是类的一个public 函数

①   与类同名

②   无返回值

③   声明为public

④   一个类中可以有多个构造函数(实际就是重载)

1.默认构造函数无参数;  带参数的构造函数,冒号后边是初始化列表

B(int i) : data(i);

Ÿ2.组合类构造函数

类名(形参表):内嵌对象1(形参表),内嵌对象2(形参表)……{}

Line(Point p1, Point p2);//类中声明
Line(Point p1, Point p2) : p1(xp1),p2(xp2){...} //声明并初始化

初始化顺序:①调用内嵌对象的构造函数(如上边Point类的构造函数)

②内嵌对象按照 组合类的声明顺序初始化(先p1,再p2)

③执行组合类自己的构造函数体

3.常量必须在构造函数的初始化列表里初始化或将其设置为static 

class A{
const int size=; //错误
A(){
const int size=;//正确,常量在构造函数里初始化
}
static const int size=;//正确,常量设置为static
};

【注意】 Test a();  和Test a;的区别  //前提声明了Test类

前者声明一个返回值为Test,名为a的函数,后者声明了Test类的一个对象(把Test当成int)

struct Test{
Test(int){} //构造函数
Test(){}
void fun(){}
}; void main(){
Test a();
a.fun();
Test b();
b.fun(); //b声明为一个函数,而不是一个对象,这里编译出粗
}

********题**目*******分割线*********************************************************************

1.请问下面程序打印结果是?(程序员面试宝典10.3节)

class base{
private:
int mi, mj;
public:
base(int i) : mj(i),mi(mj){}//构造函数1,按照mi,mj声明顺序,先初始mi(mj),结果mi是随机数,再初始化mj
base() : mj(), mi(mj){}
int get_i(){return mi;}
int get_j(){return mj;}
};
void main(){
base obj(); //调用构造函数1
cout<<obj.get_i() <<"\n"<<obj.get_j()<< endl;
}

输出结果第一个为随机数,第二个是98.如果想得到98,98,修改私有变量声明顺序为mj, mi

【C++基础】构造函数的更多相关文章

  1. JS基础——构造函数VS原型

    JS是一种基于对象的语言.在使用过程中不免遇到复制对象的问题.但通常我们採用的直接赋值'obj1=obj2'这样的做法会出现数据覆盖问题. 也就是对象引用过程中引用地址一致.导致对象数据被改动的问题. ...

  2. c#基础-构造函数 this new

    构造函数作用:帮助我们初始化对象(给对象的每个属性依次的赋值)构造函数是一个特殊的方法:1).构造函数没有返回值,连void也不能写.2).构造函数的名称必须跟类名一样. 创建对象的时候会执行构造函数 ...

  3. JAVA基础——构造函数方法总结(有参构造和无参构造)

    使用构造器时需要记住: 1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名) 2.每个类可以有一个以上的构造器 3.构造器可以有0个.1个或1个以上的参数 4.构造器没有返回 ...

  4. Flutter学习之Dart语言基础(构造函数)

    最常见的构造函数形式,即生成构造函数,创建一个类的新实例: class Point { num x, y; //Dart中int和double是num的子类 //this引用当前类对象 Point(n ...

  5. C++ 基础 构造函数的使用

  6. 你好,C++(33)对象生死两茫茫 6.2.3 一个对象的生与死:构造函数和析构函数

    6.2.2  使用类创建对象 完成某个类的声明并且定义其成员函数之后,这个类就可以使用了.一个定义完成的类就相当于一种新的数据类型,我们可以用它来定义变量,也就是创建这个类所描述的对象,表示现实世界中 ...

  7. Pytorch学习笔记(一)---- 基础语法

    书上内容太多太杂,看完容易忘记,特此记录方便日后查看,所有基础语法以代码形式呈现,代码和注释均来源与书本和案例的整理. # -*- coding: utf-8 -*- # All codes and ...

  8. Swift - 构造函数

    Swift 2.0 构造函数基础 构造函数是一种特殊的函数,主要用来在创建对象时初始化对象,为对象成员变量设置初始值,在 OC 中的构造函数是 initWithXXX,在 Swift 中由于支持函数重 ...

  9. ASP.NET Core 数据库上下文 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 数据库上下文 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 数据库上下文 上一章节中我们了解了 Entity Framewo ...

  10. 36.React基础介绍——2019年12月24日

    2019年12月24日16:47:12 2019年10月25日11:24:29 主要介绍react入门知识. 1.jsx语法介绍 1.1 介绍 jsx语法是一种类似于html标签的语法,它的作用相当于 ...

随机推荐

  1. Windows下安装GnuRadio最简单的方法(没有之一)

    作者在Windows XP SP3 32位下亲测通过,理论上Win7也没问题. 1. 如果系统中安装有Python,请先把Python卸载. 2. 下载安装Python(x,y) 2.7.5.0, 下 ...

  2. centos6.5下的mysql5.6.30安装

    1.解压mysql tar -xf mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz  -C /usr/local mv mysql-5.6.30-linux-gli ...

  3. CentOS学习笔记--基本命令--目录的相关操作

    Linux基本命令--目录的相关操作 常见的处理目录的命令吧: cd:变换目录 pwd:显示目前的目录 mkdir:创建一个新的目录 rmdir:删除一个空的目录 cd (变换目录) cd是Chang ...

  4. [DevExpress]ChartControl之时间轴示例

    关键代码: using System; using System.Data; using System.Windows.Forms; using DevExpress.XtraCharts; name ...

  5. ubuntu 停在开机界面

    今天有解决了一个问题.我在win7虚拟机上装的64位的Ubuntu 12.04.忘了怎么个情况了,反正就是系统进不去了,停在了开机界面,5个点的那个. 解决方法如下: 开机的时候按住shift键,进入 ...

  6. PHP安全之register_globals

    一.register_globals = Off 和 register_globals = On的区别 register_globals是php.ini里的一个配置,这个配置影响到php如何接收传递过 ...

  7. 一道关于比赛胜负的Sql查询题目

    以前做过一道题目,一直没有来得及总结下来.贴图: 记得以前曾经找到了两种方法,今天试了一下,还是可以的,贴出过程: 下面是具体的查询方法: 原来放的是图片,今天又练习了一下,附代码: create T ...

  8. 使用Powershell在Microsoft Azure中创建Virtual Machine

    获取虚拟机镜像 PS C:\WINDOWS\system32> Get-AzureVMImage 仅获得虚拟机名 PS C:\WINDOWS\system32> (Get-AzureVMI ...

  9. linux终端io笔记

    简介 终端的两种工作模式:以行为单位的工作模式,以字符数或时间为单位自定义模式 终端判断函数: int isatty(int fd) 终端属性的获取与设置: int tcgetattr(int fd, ...

  10. raiserror的用法

    描述:raiserror :是用于抛出一个错误 第一个参数:{ msg_id | msg_str | @local_variable } msg_id:表示可以是一个sys.messages表中定义的 ...